Forums

Home » Liferay Portal » English » 3. Development

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Ajeet Patel
session.js file override in 7.x version of liferay
April 18, 2017 4:49 AM
Answer

Ajeet Patel

Rank: New Member

Posts: 4

Join Date: March 28, 2017

Recent Posts

Hi All,
I am working on migration of my project from liferay 6 to lifeary 7. The task is to override the OOB(out of box) file session.js and customized the session warning/error message. I have override the Language_en.properties for text customization of error/warning which is working fine. But unable to override the session. js file for customization . As the hook features is deprecated in lifeary 7 and also tried with jsp override but did not get success. Please help me with the steps how to override the session.js file in liferay 7 platform.

Thanx & appreciation in advance.
Chema Balsas
RE: session.js file override in 7.x version of liferay
April 18, 2017 8:19 AM
Answer

Chema Balsas

LIFERAY STAFF

Rank: Regular Member

Posts: 109

Join Date: February 25, 2013

Recent Posts

Hey Ajeet, you should be able to override the liferay-session module following these steps
Ajeet Patel
RE: session.js file override in 7.x version of liferay
April 19, 2017 6:42 AM
Answer

Ajeet Patel

Rank: New Member

Posts: 4

Join Date: March 28, 2017

Recent Posts

Hi Chema,

Thanks for your quick reply !!!

I tried with these steps but it not works emoticon. The github location of session.js file isliferay-portal/modules/apps/foundation/frontend-js/frontend-js-web/src/main/resources/META-INF/resources/liferay/session.js. The config.js file is loading on the web page but session.js is not. The code of both the files is given below. As we know that we have to follow the same directory structure of files and i am also attaching the image of directory structure. Please let me know what is not correct and again Thanks in advance emoticon
config.js
;(function() {
AUI().applyConfig(
{
groups: {
mymodulesoverride: {

base: MODULE_PATH + '/js/liferay/',
combine: Liferay.AUI.getCombine(),
filter: Liferay.AUI.getFilterConfig(),
modules: {
'frontend-js-web': {
path: 'session.js',
condition: {
name: 'loader',
trigger: 'loader',
when: 'instead'
}
}
},
root: MODULE_PATH + '/js/liferay/'
}
}
}
);
})();

bnd.bnd
Bundle-Name: Liferay Frontend JS Web
Bundle-SymbolicName: com.liferay.frontend.js.web
Bundle-Version: 1.0-SNAPSHOT
Liferay-JS-Config: /META-INF/resources/loader/js/config.js
Liferay-Releng-Module-Group-Description:Frontend Infrastructure Description
Web-ContextPath:/frontend-js-web
emoticon
Attachment

Attachments: session.PNG (12.7k)
Chema Balsas
RE: session.js file override in 7.x version of liferay
April 24, 2017 2:54 AM
Answer

Chema Balsas

LIFERAY STAFF

Rank: Regular Member

Posts: 109

Join Date: February 25, 2013

Recent Posts

Hey Ajeet, you aren't configuring the replacement properly. Your config.js file should look like:

 1;(function() {
 2    debugger;
 3
 4    AUI().applyConfig(
 5        {
 6            groups: {
 7                sessionext: {
 8                    base: MODULE_PATH + '/js/',
 9                    combine: Liferay.AUI.getCombine(),
10                    filter: Liferay.AUI.getFilterConfig(),
11                    modules: {
12                        'liferay-session-override': {
13                            path: 'session.js',
14                            condition: {
15                                name: 'liferay-session-override',
16                                trigger: 'liferay-session',
17                                when: 'instead'
18                            }
19                        }
20                    },
21                    root: MODULE_PATH + '/js/'
22                }
23            }
24        }
25    );
26})();


And don't forget to add the Liferay-JS-Config entry in the bnd.bnd file.

I'm attaching a simple example that is working for me.
Attachments: frontend-js-session-web.zip (12.0k)
Ajeet Patel
RE: session.js file override in 7.x version of liferay
April 26, 2017 12:19 AM
Answer

Ajeet Patel

Rank: New Member

Posts: 4

Join Date: March 28, 2017

Recent Posts

Hi Chema,
Thanks for reply.
I deploy the given example code but it disable the login with the following error in the red block TypeError: Liferay.SessionBase is not a constructor Liferay.Session = new Liferay.SessionBase(. Due to this issue i am not able to test the session.js override feature on browser. See the attached screen shot of error. As i undeploy the code it again working fine but not with session file override.
Attachment

Attachments: Desctop screenshot.png (54.8k)
Pablo Lopez
RE: session.js file override in 7.x version of liferay
July 3, 2017 3:53 PM
Answer

Pablo Lopez

Rank: New Member

Posts: 1

Join Date: November 28, 2016

Recent Posts

Ajeet Patel:
Hi Chema,
Thanks for reply.
I deploy the given example code but it disable the login with the following error in the red block TypeError: Liferay.SessionBase is not a constructor Liferay.Session = new Liferay.SessionBase(. Due to this issue i am not able to test the session.js override feature on browser. See the attached screen shot of error. As i undeploy the code it again working fine but not with session file override.


I have the same problem, did you find any solution?

Thanks
Vipin Bardia
RE: session.js file override in 7.x version of liferay
October 30, 2017 6:08 AM
Answer

Vipin Bardia

Rank: Regular Member

Posts: 159

Join Date: February 27, 2011

Recent Posts

Hi Chema,

I am able to override JS file by following session-web and I am getting the same error as Ajeet!

Uncaught TypeError: Liferay.LogoEditor is not a constructor

BND

1Bundle-Name: logo-editor-for
2Bundle-SymbolicName: logo-editor-for
3Bundle-Version: 1.0.0
4Liferay-JS-Config: /META-INF/resources/js/config.js
5Web-ContextPath: /logo-editor-web-override


CONFIG JS

 1;(function() {
 2    //debugger;
 3
 4    AUI().applyConfig(
 5        {
 6            groups: {
 7                sessionext: {
 8                    base: MODULE_PATH + '/js/',
 9                    combine: Liferay.AUI.getCombine(),
10                    filter: Liferay.AUI.getFilterConfig(),
11                    modules: {
12                        'liferay-logo-editor-override': {
13                            path: 'logo_editor.js',
14                            condition: {
15                                name: 'liferay-logo-editor-override',
16                                trigger: 'liferay-logo-editor',
17                                when: 'instead'
18                            }
19                        }
20                    },
21                    root: MODULE_PATH + '/js/'
22                }
23            }
24        }
25    );
26})();


Many of us are facing the same issue, workaround will be much appreciated!

Thanks in advance.
Sanjaya Chaudhary
RE: session.js file override in 7.x version of liferay
October 31, 2017 10:23 AM
Answer

Sanjaya Chaudhary

Rank: New Member

Posts: 1

Join Date: April 14, 2015

Recent Posts

I am facing same issue ,
Michael Williams
RE: session.js file override in 7.x version of liferay
November 1, 2017 2:57 PM
Answer

Michael Williams

LIFERAY STAFF

Rank: New Member

Posts: 11

Join Date: March 14, 2014

Recent Posts

I was able to override session.js by giving my override copy a different name and providing that for the `path` value in my `config.js` . For example, `liferay-session.js` instead of `session.js`. I've updated the expired message text on line 418 of `liferay-session.js` as a test. Here is my code:

BND:
1Bundle-SymbolicName: session.js.override.web
2Liferay-JS-Config:/META-INF/resources/js/config.js
3Bundle-Version: 1.0.0


config.js:

 1;(function() {
 2
 3    var base = MODULE_PATH + '/js/';
 4
 5    AUI().applyConfig(
 6        {
 7            groups: {
 8                mymodulesoverride: {
 9                    base: base,
10                    combine: Liferay.AUI.getCombine(),
11                    filter: Liferay.AUI.getFilterConfig(),
12                    modules: {
13                        'liferay-session-override': {
14                            path: 'liferay-session.js',
15                            condition: {
16                                name: 'liferay-session-override',
17                                trigger: 'liferay-session',
18                                when: 'instead'
19                            }
20                        }
21                    },
22                    root: base
23                }
24            }
25        }
26    );
27})();


liferay-session.js:
  1AUI.add(
  2    'liferay-session-override',
  3    function(A) {
  4        var Lang = A.Lang;
  5
  6        var BUFFER_TIME = [];
  7
  8        var CONFIG = A.config;
  9
 10        var DOC = CONFIG.doc;
 11
 12        var MAP_SESSION_STATE_EVENTS = {
 13            active: 'activated'
 14        };
 15
 16        var SRC = {};
 17
 18        var SRC_EVENT_OBJ = {
 19            src: SRC
 20        };
 21
 22        var URL_BASE = themeDisplay.getPathMain() + '/portal/';
 23
 24        var SessionBase = A.Component.create(
 25            {
 26                ATTRS: {
 27                    autoExtend: {
 28                        value: false
 29                    },
 30                    redirectOnExpire: {
 31                        value: true
 32                    },
 33                    redirectUrl: {
 34                        value: ''
 35                    },
 36                    sessionLength: {
 37                        getter: '_getLengthInMillis',
 38                        value: 0
 39                    },
 40                    sessionState: {
 41                        value: 'active'
 42                    },
 43                    timestamp: {
 44                        getter: '_getTimestamp',
 45                        setter: '_setTimestamp',
 46                        value: 0
 47                    },
 48                    warningLength: {
 49                        getter: '_getLengthInMillis',
 50                        setter: '_setWarningLength',
 51                        value: 0
 52                    },
 53                    warningTime: {
 54                        getter: '_getWarningTime',
 55                        value: 0
 56                    }
 57                },
 58                EXTENDS: A.Base,
 59                NAME: 'liferaysession',
 60                prototype: {
 61                    initializer: function(config) {
 62                        var instance = this;
 63
 64                        instance._cookieOptions = {
 65                            path: '/',
 66                            secure: A.UA.secure
 67                        };
 68
 69                        instance._registered = {};
 70
 71                        instance.set('timestamp');
 72
 73                        instance._initEvents();
 74
 75                        instance._startTimer();
 76                    },
 77
 78                    destructor: function() {
 79                        var instance = this;
 80
 81                        (new A.EventHandle(instance._eventHandlers)).detach();
 82
 83                        instance._stopTimer();
 84                    },
 85
 86                    expire: function() {
 87                        var instance = this;
 88
 89                        instance.set('sessionState', 'expired', SRC_EVENT_OBJ);
 90                    },
 91
 92                    extend: function() {
 93                        var instance = this;
 94
 95                        instance.set('sessionState', 'active', SRC_EVENT_OBJ);
 96                    },
 97
 98                    registerInterval: function(fn) {
 99                        var instance = this;
100
101                        var fnId;
102                        var registered = instance._registered;
103
104                        if (Lang.isFunction(fn)) {
105                            fnId = A.stamp(fn);
106
107                            registered[fnId] = fn;
108                        }
109
110                        return fnId;
111                    },
112
113                    resetInterval: function() {
114                        var instance = this;
115
116                        instance._stopTimer();
117                        instance._startTimer();
118                    },
119
120                    unregisterInterval: function(fnId) {
121                        var instance = this;
122
123                        var registered = instance._registered;
124
125                        if (registered.hasOwnProperty(fnId)) {
126                            delete registered[fnId];
127                        }
128
129                        return fnId;
130                    },
131
132                    warn: function() {
133                        var instance = this;
134
135                        instance.set('sessionState', 'warned', SRC_EVENT_OBJ);
136                    },
137
138                    _afterSessionStateChange: function(event) {
139                        var instance = this;
140
141                        var details = event.details;
142                        var newVal = event.newVal;
143
144                        var src = null;
145
146                        if ('src' in event && details.length) {
147                            src = details[0];
148                        }
149
150                        instance.fire(MAP_SESSION_STATE_EVENTS[newVal] || newVal, src);
151                    },
152
153                    _defActivatedFn: function(event) {
154                        var instance = this;
155
156                        instance.set('timestamp');
157
158                        if (event.src == SRC) {
159                            instance._getExtendIO().start();
160                        }
161                    },
162
163                    _defExpiredFn: function(event) {
164                        var instance = this;
165
166                        A.clearInterval(instance._intervalId);
167
168                        instance.set('timestamp', 'expired');
169
170                        if (event.src === SRC) {
171                            instance._getExpireIO().start();
172                        }
173                    },
174
175                    _getExpireIO: function() {
176                        var instance = this;
177
178                        var expireIO = instance._expireIO;
179
180                        if (!expireIO) {
181                            expireIO = A.io.request(
182                                URL_BASE + 'expire_session',
183                                {
184                                    autoLoad: false,
185                                    on: {
186                                        success: function(event, id, obj) {
187                                            Liferay.fire('sessionExpired');
188
189                                            if (instance.get('redirectOnExpire')) {
190                                                location.href = instance.get('redirectUrl');
191                                            }
192                                        }
193                                    }
194                                }
195                            );
196
197                            instance._expireIO = expireIO;
198                        }
199
200                        return expireIO;
201                    },
202
203                    _getExtendIO: function() {
204                        var instance = this;
205
206                        var extendIO = instance._extendIO;
207
208                        if (!extendIO) {
209                            extendIO = A.io.request(
210                                URL_BASE + 'extend_session',
211                                {
212                                    autoLoad: false
213                                }
214                            );
215
216                            instance._extendIO = extendIO;
217                        }
218
219                        return extendIO;
220                    },
221
222                    _getLengthInMillis: function(value) {
223                        var instance = this;
224
225                        return value * 1000;
226                    },
227
228                    _getTimestamp: function(value) {
229                        var instance = this;
230
231                        return A.Cookie.get(instance._cookieKey, instance._cookieOptions) || 0;
232                    },
233
234                    _getWarningTime: function() {
235                        var instance = this;
236
237                        return instance.get('sessionLength') - instance.get('warningLength');
238                    },
239
240                    _initEvents: function() {
241                        var instance = this;
242
243                        instance.publish(
244                            'activated',
245                            {
246                                defaultFn: A.bind('_defActivatedFn', instance)
247                            }
248                        );
249
250                        instance.publish(
251                            'expired',
252                            {
253                                defaultFn: A.bind('_defExpiredFn', instance)
254                            }
255                        );
256
257                        instance.publish('warned');
258
259                        instance._eventHandlers = [
260                            instance.on('sessionStateChange', instance._onSessionStateChange),
261                            instance.after('sessionStateChange', instance._afterSessionStateChange),
262                            A.on(
263                                'io:complete',
264                                function(transactionId, response, args) {
265                                    if (!args || args && args.sessionExtend || !Lang.isBoolean(args.sessionExtend)) {
266                                        instance.resetInterval();
267                                    }
268                                }
269                            ),
270                            Liferay.once(
271                                'screenLoad',
272                                function() {
273                                    instance.destroy();
274                                }
275                            )
276                        ];
277                    },
278
279                    _onSessionStateChange: function(event) {
280                        var instance = this;
281
282                        var newVal = event.newVal;
283                        var prevVal = event.prevVal;
284
285                        if (prevVal == 'expired' && prevVal != newVal) {
286                            event.preventDefault();
287                        }
288                        else if (prevVal == 'active' && prevVal == newVal) {
289                            instance._afterSessionStateChange(event);
290                        }
291                    },
292
293                    _setTimestamp: function(value) {
294                        var instance = this;
295
296                        value = String(value || Date.now());
297
298                        return A.Cookie.set(instance._cookieKey, value, instance._cookieOptions);
299                    },
300
301                    _setWarningLength: function(value) {
302                        var instance = this;
303
304                        return Math.min(instance.get('sessionLength'), value);
305                    },
306
307                    _startTimer: function() {
308                        var instance = this;
309
310                        var sessionLength = instance.get('sessionLength');
311                        var warningTime = instance.get('warningTime');
312
313                        var registered = instance._registered;
314
315                        var interval = 1000;
316
317                        instance._intervalId = A.setInterval(
318                            function() {
319                                var timeOffset;
320
321                                var timestamp = instance.get('timestamp');
322
323                                var elapsed = sessionLength;
324
325                                if (Lang.toInt(timestamp)) {
326                                    timeOffset = Math.floor((Date.now() - timestamp) / 1000) * 1000;
327
328                                    elapsed = timeOffset;
329                                }
330                                else {
331                                    timestamp = 'expired';
332                                }
333
334                                var extend = instance.get('autoExtend');
335
336                                var expirationMoment = false;
337                                var warningMoment = false;
338
339                                var hasExpired = elapsed >= sessionLength;
340                                var hasWarned = elapsed >= warningTime;
341
342                                if (hasWarned) {
343                                    if (timestamp == 'expired') {
344                                        expirationMoment = true;
345                                        extend = false;
346                                        hasExpired = true;
347                                    }
348
349                                    var sessionState = instance.get('sessionState');
350
351                                    if (hasExpired && sessionState != 'expired') {
352                                        if (extend) {
353                                            expirationMoment = false;
354                                            hasExpired = false;
355                                            hasWarned = false;
356                                            warningMoment = false;
357
358                                            instance.extend();
359                                        }
360                                        else {
361                                            instance.expire();
362
363                                            expirationMoment = true;
364                                        }
365                                    }
366                                    else if (hasWarned && !hasExpired && !extend && sessionState != 'warned') {
367                                        instance.warn();
368
369                                        warningMoment = true;
370                                    }
371                                }
372
373                                for (var i in registered) {
374                                    registered[i](elapsed, interval, hasWarned, hasExpired, warningMoment, expirationMoment);
375                                }
376                            },
377                            interval
378                        );
379                    },
380
381                    _stopTimer: function() {
382                        var instance = this;
383
384                        A.clearInterval(instance._intervalId);
385                    },
386
387                    _cookieKey: 'LFR_SESSION_STATE_' + themeDisplay.getUserId()
388                }
389            }
390        );
391
392        SessionBase.SRC = SRC;
393
394        var SessionDisplay = A.Component.create(
395            {
396                ATTRS: {
397                    pageTitle: {
398                        value: DOC.title
399                    }
400                },
401                EXTENDS: A.Plugin.Base,
402                NAME: 'liferaysessiondisplay',
403                NS: 'display',
404                prototype: {
405                    initializer: function(config) {
406                        var instance = this;
407
408                        var host = instance.get('host');
409
410                        if (Liferay.Util.getTop() == CONFIG.win) {
411                            instance._host = host;
412
413                            instance._toggleText = {
414                                hide: Liferay.Language.get('hide'),
415                                show: Liferay.Language.get('show')
416                            };
417
418                            instance._expiredText = Liferay.Language.get('due-to-inactivity-your-session-has-expired-friend');
419
420                            instance._warningText = Liferay.Language.get('due-to-inactivity-your-session-will-expired-friend');
421                            instance._warningText = Lang.sub(
422                                instance._warningText,
423                                [
424                                    '<span class="countdown-timer">{0}</span>',
425                                    host.get('sessionLength') / 60000,
426                                    '<a class="alert-link" href="#">' + Liferay.Language.get('extend') + '</a>'
427                                ]
428                            );
429
430                            host.on('sessionStateChange', instance._onHostSessionStateChange, instance);
431
432                            instance.afterHostMethod('_defActivatedFn', instance._afterDefActivatedFn);
433                            instance.afterHostMethod('_defExpiredFn', instance._afterDefExpiredFn);
434                        }
435                        else {
436                            host.unplug(instance);
437                        }
438                    },
439
440                    destructor: function() {
441                        var instance = this;
442
443                        if (instance._banner) {
444                            instance._banner.destroy();
445                        }
446                    },
447
448                    _afterDefActivatedFn: function(event) {
449                        var instance = this;
450
451                        instance._uiSetActivated();
452                    },
453
454                    _afterDefExpiredFn: function(event) {
455                        var instance = this;
456
457                        instance._host.unregisterInterval(instance._intervalId);
458
459                        instance._uiSetExpired();
460                    },
461
462                    _beforeHostWarned: function(event) {
463                        var instance = this;
464
465                        var host = instance._host;
466
467                        var sessionLength = host.get('sessionLength');
468                        var timestamp = host.get('timestamp');
469                        var warningLength = host.get('warningLength');
470
471                        var elapsed = sessionLength;
472
473                        if (Lang.toInt(timestamp)) {
474                            elapsed = Math.floor((Date.now() - timestamp) / 1000) * 1000;
475                        }
476
477                        var remainingTime = sessionLength - elapsed;
478
479                        if (remainingTime > warningLength) {
480                            remainingTime = warningLength;
481                        }
482
483                        var banner = instance._getBanner();
484
485                        var counterTextNode = banner.one('.countdown-timer');
486
487                        instance._uiSetRemainingTime(remainingTime, counterTextNode);
488
489                        banner.show();
490
491                        instance._intervalId = host.registerInterval(
492                            function(elapsed, interval, hasWarned, hasExpired, warningMoment, expirationMoment) {
493                                if (!hasWarned) {
494                                    instance._uiSetActivated();
495                                }
496                                else if (!hasExpired) {
497                                    if (warningMoment) {
498                                        if (remainingTime <= 0) {
499                                            remainingTime = warningLength;
500                                        }
501
502                                        banner.show();
503                                    }
504
505                                    elapsed = Math.floor((Date.now() - timestamp) / 1000) * 1000;
506
507                                    remainingTime = sessionLength - elapsed;
508
509                                    instance._uiSetRemainingTime(remainingTime, counterTextNode);
510
511                                }
512
513                                remainingTime -= interval;
514                            }
515                        );
516                    },
517
518                    _formatNumber: function(value) {
519                        var instance = this;
520
521                        return Lang.String.padNumber(Math.floor(value), 2);
522                    },
523
524                    _formatTime: function(time) {
525                        var instance = this;
526
527                        time = Number(time);
528
529                        if (Lang.isNumber(time) && time > 0) {
530                            time /= 1000;
531
532                            BUFFER_TIME[0] = instance._formatNumber(time / 3600);
533
534                            time %= 3600;
535
536                            BUFFER_TIME[1] = instance._formatNumber(time / 60);
537
538                            time %= 60;
539
540                            BUFFER_TIME[2] = instance._formatNumber(time);
541
542                            time = BUFFER_TIME.join(':');
543                        }
544                        else {
545                            time = 0;
546                        }
547
548                        return time;
549                    },
550
551                    _getBanner: function() {
552                        var instance = this;
553
554                        var banner = instance._banner;
555
556                        if (!banner) {
557                            banner = new Liferay.Notification(
558                                {
559                                    closeable: true,
560                                    delay: {
561                                        hide: 0,
562                                        show: 0
563                                    },
564                                    duration: 500,
565                                    message: instance._warningText,
566                                    on: {
567                                        click: function(event) {
568                                            if (event.domEvent.target.test('.alert-link')) {
569                                                event.domEvent.preventDefault();
570                                                instance._host.extend();
571                                            }
572                                        }
573                                    },
574                                    title: Liferay.Language.get('warning'),
575                                    type: 'warning'
576                                }
577                            ).render('body');
578
579                            instance._banner = banner;
580                        }
581
582                        return banner;
583                    },
584
585                    _onHostSessionStateChange: function(event) {
586                        var instance = this;
587
588                        if (event.newVal == 'warned') {
589                            instance._beforeHostWarned(event);
590                        }
591                    },
592
593                    _uiSetActivated: function() {
594                        var instance = this;
595
596                        DOC.title = instance.reset('pageTitle').get('pageTitle');
597
598                        instance._host.unregisterInterval(instance._intervalId);
599
600                        var banner = instance._getBanner();
601
602                        if (banner) {
603                            banner.hide();
604                        }
605                    },
606
607                    _uiSetExpired: function() {
608                        var instance = this;
609
610                        var banner = instance._getBanner();
611
612                        banner.setAttrs(
613                            {
614                                message: instance._expiredText,
615                                title: Liferay.Language.get('danger'),
616                                type: 'danger'
617                            }
618                        );
619
620                        DOC.title = instance.get('pageTitle');
621                    },
622
623                    _uiSetRemainingTime: function(remainingTime, counterTextNode) {
624                        var instance = this;
625
626                        var banner = instance._getBanner();
627
628                        remainingTime = instance._formatTime(remainingTime);
629
630                        banner.set(
631                            'message',
632                            Lang.sub(
633                                instance._warningText,
634                                [
635                                    remainingTime
636                                ]
637                            )
638                        );
639
640                        DOC.title = Lang.sub(Liferay.Language.get('session-expires-in-x'), [remainingTime]) + ' | ' + instance.get('pageTitle');
641                    }
642                }
643            }
644        );
645
646        Liferay.SessionBase = SessionBase;
647        Liferay.SessionDisplay = SessionDisplay;
648    },
649    '',
650    {
651        requires: ['aui-io-request', 'aui-timer', 'cookie', 'liferay-notification']
652    }
653);


You can test that the module is overriding the original by entering this into the console:
1Liferay.Session.display._expiredText


Hope this helps.
Vipin Bardia
RE: session.js file override in 7.x version of liferay
November 2, 2017 2:20 AM
Answer

Vipin Bardia

Rank: Regular Member

Posts: 159

Join Date: February 27, 2011

Recent Posts

Thank you Michael!
It's working now emoticon

It needs a small change in BND, add web context path and it does the magic.
Sharad Shankhdhar
RE: session.js file override in 7.x version of liferay
November 30, 2017 12:34 PM
Answer

Sharad Shankhdhar

Rank: New Member

Posts: 4

Join Date: April 14, 2015

Recent Posts

Ajeet Patel:
Hi Chema,
Thanks for reply.
I deploy the given example code but it disable the login with the following error in the red block TypeError: Liferay.SessionBase is not a constructor Liferay.Session = new Liferay.SessionBase(. Due to this issue i am not able to test the session.js override feature on browser. See the attached screen shot of error. As i undeploy the code it again working fine but not with session file override.

Hi Ajeet,
I am getting the same error; Could you share the fix if you have it figured out?

Participate in the State of Liferay Community 2017. Help the community and even win some prizes!