on 2012 Aug 14 9:11 AM
Hi
We have an situation to display portal message to all the successful login users, The Portal message should not conatain any navigational links and should have buttons to agree or disagree, the agree shall take them to the default framework with all the business roles, For Which we are following the document
I have tried to edit the msathead.par file with html code provided, but not sure how and where to place, Should i delete the standard headeriview.jsp and create a new with only html code, or shall i keep the standard headeriview.jsp and copy the same in new headeriview with the html code in the last.
Is my understnading right? Can i acheieve my requirement through the document provided in the link?
Apprecitae time and help.
Regards,
Prabhakar
Request clarification before answering.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Naga,
Thanks for following up and appreciate, The Video exactly shows what we intended to do. I am not sure how you achieved this, But we had intermediate solution for the requirement, This is how we did:
1) Created an component in NWDS with HTML Code with "I Agree" redirects to irj/portal and "DisAgree" to Logout in header.jsp
2) upload the same to the portal and navigation looks likes http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default
3) The same navigation is redirected via SAP Web Dispatcher placed in DMZ
icm/HTTP/redirect_0 = PREFIX=/, PROT=https, TO=/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default, HOST=www.ZZZZ.com
As and when user clicks on the link it is by default redirects to the component page and after hitting the I Agree button it will directs again to /irj/portal.
Could you as well elaborate the video link how to achieve the same, Eager to know the alternate solution without having the WebDispatcehr redirect.
It's an great idea to have an article on the same.
Regards
Prabhakar
Hi Prabhakar,
Redirecting using Web Dispatcher is too another alternative solution with Agree to /irj/portal and DisAgree to Logout ... this approach was the last ones I was planing for... but anyways good work!
And your guess is correct, my solution is without using the dispatcher. Here it goes:
Configurtaion:
1. Create an iView with the deployed HTML (PAR) page
2. Create a new Desktop and assign only this html-iview to it
3. Make the below assignments in your master rule collection
REC Circle: you've to ensure the logging users/group assigned a defaultDesktop or projectSpecificDesktop, b'coz this desktop has all the framework elements needed to work with.
BLACK Circle: this will redirect the users/group to the one created in step.2
4. Now coming to the code of onAction even of your Submit button in the html:
"/irj/servlet/prt/portal/prtroot/pcd!3aportal_content!2fevery_user!2fgeneral!2fframeworkpage?sap-config-mode=true"
Implementation:
5. Now the user login to EP using /irj/portal itself... there is no change in it.
6. Based on the rule collection.. the portal framework will redirect him to PLMHD (post logon) desktop by default. And this is a place we will show our terms & condistions stuff for users to click on either Agree or DisAgree.
7. And the magic-logic here is ... when the user clicks on Agree button it will redirect to the deafultDesktop or projectDesktop which you need the users to work on as per the code specified in point.4!
8. Now you are on your regular framework as-usual!
Logic: The user logged into customDesktop first using /irj/portal and then redirected to required defaultDesktop after the post-logon-custom-message page displayed.
If this logic wouldn't have worked for me, even I would've gone for dispatcher approach!
Hoping that you've got the solutions needed!
Thanks,
MS
Hi Naga and Prabhakar,
These are both nice solutions. I have to say that I think Prabhakars is more flexible since after the user accepts the agreement they are redirected to the normal /irj/portal which then allows for the standard logic to assign the right desktop. I think using Naga's solution the standard rules are bypassed and you would have to build in the logic to redirect to the right desktop yourself.
Anyway great work and thanks for sharing.
Simon
Hi Naga,
I have read your artical it is very good and self explanatory.
Wondering if you could help us on the Dektop rules in portal, I have tried creatin couple of frameworks and Desktops, However i find diffulty in settinup the desktop rules to work.
As you mentioned earlier i have done all the configuration, But the desktop rules were not getting in place for the users mentioned, i could only see the default desktop to the all the users.
Would you able to help me in pointing to the comprehensive document for creating desktop rules.
Regards
Prabhakar
Hi Naga and Prabhakar,
Thanks for all the information that post here, I have a question for both. In both solution I understand that the user had to agree "Terms and Condition" on every login. Have you thought any solution to store a flag or value on user profile to avoid this issue?
I am working on that but I am not sure how can I get the user profile values. Any advice?
Regards,
Nicolás
Prabhakar,
Hey its done... finally!! And it goes this way:
Login to Portal > Custome Login Message for Agree/Disagree and onclick of 'Go' button > takes you to DefaultDesktopPage with all framework elements.
I would post you the navigating video ... soon and comment whether its acceptable or not!
Thanks,
MS
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
i think coding in welcome page will be more easy for you(if every authenticated user must have less one role). use WD4A or Java that is no problem, just add a pop-up code to your welcome page.
Best regards.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Prabhakar,
Did you tried testing both pre & post logon scenarios as described in the document?
If yes and successful in testing post logon scenario (this is what you need) .., then do as its very clearly explained in page nos. 10 & 11.. you just need to create HeaderiView_temp.jsp as cope of original and place your custom code in HeaderiView.jsp. No need to deleted anything, and work on HeaderiView.jsp file to achieve your requirement.
Thanks,
MS
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your helpful answer,
However, We are only trying to achieve the post portal login option, I havent tried the Pre Portal login.
As explained in the documnet in page 10 & 11 i have copied the html code on top of the headeriview.jsp file. JAR files were also included.
The document suggests "Deploy the code by exporting the par file to the portal server and run it. "
I have deployed the PAR file and created the iview on "default" component of PAR file, When i checked for the preview it is thorwing for portal runtime exception,
Please advise on how to proceed further.
Regards,
Prabhakar.
i am using same html code but i am getting portal exception error. please find the trace .
[EXCEPTION]
{0}#1#com.sapportals.portal.prt.component.PortalComponentException: Error in init method
Component : MessagePostLogon.default
at com.sapportals.portal.prt.component.PortalComponentContext.init(PortalComponentContext.java:251)
at com.sapportals.portal.prt.core.broker.PortalComponentContextItem.refresh(PortalComponentContextItem.java:271)
at com.sapportals.portal.prt.core.broker.PortalComponentContextItem.getContext(PortalComponentContextItem.java:316)
at com.sapportals.portal.prt.component.PortalComponentRequest.getComponentContext(PortalComponentRequest.java:387)
at com.sapportals.portal.prt.connection.PortalRequest.getRootContext(PortalRequest.java:488)
at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:607)
at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)
at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:540)
at java.security.AccessController.doPrivileged(AccessController.java:246)
at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:423)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(AccessController.java:219)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:104)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:176)
Caused by: com.sapportals.portal.prt.core.broker.PortalComponentInstantiationException: Could not instantiate implementation class com.sapportals.portal.navigation.Head
eriView of Portal Component MessagePostLogon.default because: Could not find implementation class
at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getInstanceInternal(PortalComponentItemFacade.java:242)
at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getComponentInstance(PortalComponentItemFacade.java:160)
at com.sapportals.portal.prt.core.broker.PortalComponentItem.getComponentInstance(PortalComponentItem.java:732)
at com.sapportals.portal.prt.component.PortalComponentContext.getComponent(PortalComponentContext.java:103)
at com.sapportals.portal.prt.component.PortalComponentContext.init(PortalComponentContext.java:242)
... 26 more
Caused by: java.lang.ClassNotFoundException: com.sapportals.portal.navigation.HeaderiView
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:152)
at com.sapportals.portal.prt.core.broker.PortalComponentItemFacade.getInstanceInternal(PortalComponentItemFacade.java:228)
... 30 more
Hi Naga,
I found the issue because it is in the par file ".jar" files were missing in lib folder.
After successfully deploying the PAR on to the server i am able to view the content via calling an iView.
Now the issue is the user should be redirected staright to the link http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default after successfull login. Once user sees the page and clicks on "go" it should again redirect to the regular portal framework. Please advise on how to achive the redirection.
Regards
Prabhakar
Prabhakar,
Couple of things here..., consider them if you've not met with your requirement:
- you should allow/ask your users to login ONLY with the below url
http://portalhost:port/irj/servlet/prt/portal/prtrooot/MessagePostLogon.default. this would ask them to give a login to get inside the portal. So check with your client/users the same, and if they are feasible with the option just implement it .. as its already done.
- i've given few trials with the peice of code(PDF), using Quick Links for iView, customized desktop loaded only with this PostLogon page..! But non of them are a full-proof to deliver it to the clients.
- or a work-around: why dont you place an ALERT in masthead that would load the TEST/MESSAGE that you want the users to read and take action (Agree
or Disagree) .. onClick on Agree show-them the desktop page otherwise onClick on Disagree call the logOff function or close the window.Hope the above is helpful!
-MS
Hi Naga,
Greatly appreciate the effort and time you spent for this.
Option1:We have Logon module set for the user authentication, So Log in page would not be appeare for the end users as they have allready authenticated.
Option2: Alert and popups were tried but it wont serve the purpose.
I have also tried creating two Frameworks and desktops, The first one will be without any TLN and second one with all the default settings, However we thought achieving this by iview with desktop rules in place, Apparantly I could not achieve, May be i do not know how to set the desktop rules correctly for direct from one framework to another.
As well i have tried with creating HTML and Bex iviews and tried to place that an initial view as dialog window but i could not achieve it to populate without any event.
If you have any other thoughts or if my requirement can be achieved by any other solution please do let me know.
Regards,
Prabhakar.
User | Count |
---|---|
61 | |
7 | |
7 | |
6 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.