We're using WebSphere Portal ver 7. In our themes we've a flyout menu in the header. The links in the flyout menu vary based on the type of the user accessing the application.
The links are rendered using the portal navigation tags -
<portal:urlGeneration contentNode="com.XXXXX.member.XX.XXX123" keepNavigationalState="false">
The access to the contentNode is set on visibility rules. For users that do not have access to a particular content node the link is not visible.
Since the flyout menu is in the themes header, whenever a logged in user does not have access to a particular link in the menu the portal navigation throws URLGeneration errors resulting in NullPointer exceptions. These errors get logged into our SysOut. The frequency of errors gets so high that the logs roll back and it gets hard for the server team to maintain them.
Since this a WebSphere portal issue there is a fix available for it in Portal 8 onwards but not in Portal 7.
We would like to know if there could be a way the application could handle the URLGeneration errors gracefully and stop from filling our logs. We do not want to implement the same visibility rule checks in our themes because then we would lose the whole purpose of using the portal navigation and also when Business Rules change it would be another add on item to be changed.
Would like to hear some inputs.
PS - PFB error log stack trace -
[10/13/16 17:03:16:097 EDT] 00000052 CreateUrlComm E com.ibm.wps.util.CreateUrlCommand execute EJPEJ0012E: Could not find the node ID and root ID corresponding to the given content node ID.
[10/13/16 17:03:16:099 EDT] 00000052 UrlGeneration E com.ibm.wps.engine.tags.UrlGenerationTag doStartTag EJPEJ0004E: An unexpected exception occurred.
java.lang.NullPointerException
at com.ibm.wps.util.CreateUrlCommand.createFriendlyURL(CreateUrlCommand.java:809)
at com.ibm.wps.engine.tags.UrlGenerationTag.doStartTag(UrlGenerationTag.java:344)
at com.ibm._jsp._header._jspService(_header.java:1678)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:307)
at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:576)
at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:250)
at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:259)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1694)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:970)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:508)
You can tell it to ignore, either fatal only or turn it off
https://www.ibm.com/support/knowledgecenter/SSEQTP_7.0.0/com.ibm.websphere.nd.doc/info/ae/ae/rtrb_enabletrc.html
com.ibm.wps.engine.tags.UrlGenerationTag=off
or you could put exception handling around the jsp to handle it better
Related
I have a newly deployed site running Dnn v9.10.02 and 2sxc v13.0.0. I am building a custom app that contains an Event entity and an Organization entity. One of the fields of Event is an entity type of Organization to mark which organization is hosting the event. When I try to delete an Event using the TagToolBar on the frontend I receive an error that it can't delete the entity. If I try to delete the same Event entity through the backend 2sxc panel the error message lets me know that the reason for the error is due to having an Organization entity as a child. If I remove the Organization child entity I can delete the Event using either the front end TagToolbar or the backend panel. Leaving the Organization in place while trying to delete the Event through the backend 2sxc panel I get the option to force delete the Event, which works as expected. Is there a way to ignore this error, or to at least get the force delete option, while using the frontend TagToolbar?
ATM this is not possible - for now on purpose, because simple users tend to hurt themselves by accident since they ignore these warnings and later blame the developer for the problem ;)
So ATM there is no direct plan to change this.
I installed a 2sxc version 11.11.3 Inside a fresh dnn 9.3.2.
After this I created a content Module with the simple test view inside. After this I granted this module the edit permission to the Registered Users Group on dnn module Level.
If I log in as a registered user I can see the 2sxc toolbar (blue symbols when hovering the item of the module) of the Module and the items. If I press the edit icon I get the Message "had an Error Talking with the Server (Status 403)".
Has anyone an idea what I am doing wrong?
Thank you very much
Robert
Edit1
The browser console shows following content in the ERROR object:
error: "Permission denied. required permissions for this request are not given"
headers: t
lazyInit: ƒ ()
lazyUpdate: null
normalizedNames: Map(0) {}
__proto__: Object
message: "Http failure response for https://.../api/2sxc/cms/edit/load?appId=2: 403 OK"
name: "HttpErrorResponse"
ok: false
status: 403
statusText: "OK"
url: "https://.../api/2sxc/cms/edit/load?appId=2"
Edit2
After this I wanted to explore, if the behavior is 2sxc Content module related or if it is related to all apps (in my understanding the 2sxc Content module is an app too). I installed the "FAQ" app, granted the dnn "Edit" permission to the "Registered users" group and logged in as a registered user and pressed the edit icon on the 2scx toolbar - and had the same behavior like described in the origin post.
But: I got it running for the "FAQ" app, but not for the "Content" app. Here are my steps to get it running for the "FAQ" app:
click on "Apps management" (available in the dnn edit action or in the 2sxc toolbar)
"Features" - add feature - enable "Permission by Group / Role" - Activate feature
"Apps" - "FAQ" (or another except Content)
"App" - "App Permissions" (click on the icon) - "create new permission" - Identity=xx (xx=RoleId of the Group in table dbo.Roles) - Grant=Edit (in my case I want that the current registered user is able to edit an item) - Save (Ctrl+S)
After this I was able to edit the item of the "FAQ" module.
The "App Permissions" icon is disabled by default for the "Content" module on App level (and on view and data level too). Does anyone know if this is by design or is there a possibility to activate this option? Otherwise I have to migrate my content views to an app to get the permissions running.
Edit3
I ended up by migrating the content of the "Content" app to a new custom app. The effort is very less and getting the possibility to grant permissions was worth doing it.
In a conclusion I'll answer my question by myself. I suppose that the "Content" app has not the possibility granting the dedicated permissions. But the app itself has the posibility - so it could be a good idea, to create content inside an app.
Just some background: The content-app is meant for simple content and behaves differently from normal apps. Example:
when you add a content-app, the dialog asks for you to choose what content-type, and what view
when you add an app, the dialog asks you for which app, and then what view
Basically the content-app has various optimizations to make it lighter and simpler, but we wanted to prevent people from "shooting themselves in the foot" because they will usually start with content, and then make it increasingly complex (never separating different concerns) and end up with a big mess.
This is why the content-app has some forced limitations (like no app-permissions) to guide people to place more complex functionality in own apps.
Now note that this doesn't explain your original issue: apparently edit-permissions didn't work as expected. That seems to be a bug, not an intension. If you think that should be followed up, best create an issue on github.
I am developing a simple application using ADF comes with basic CRUD operations (create, read, update, delete). In this case, as you can see, I have dragged a link to the 1st column which is highlighted in yellow.
So whenever I deploy it and click that, it is supposed to redirect me to the Edit page where client will allow to make commit:
I did make sure the Action of link is associated with the Edit page (as highlighted in yellow above). However, the link wouldn't redirect me anywhere, no response.This is the unbounded task flow:
Okay so I have found out the solution. Due to the default setting, the application will be deployed on IE and this message will prompt out. As you can see, the message is mentioning about browser's compatibility. My IE is version 11.6, I'm not sure what's the issue here since my IE is kinda latest version but this message still pops out and affects the redirect link from working. However, simply copy the application URL to Google Chrome and run should fix this issue. Hope this helps in future.
If the two pages in the Unbounded Task Flow, then Add WildCard Control Flow Rule
and connect the two pages with the WildCard.
Or you can use the Popup instead of opening a new page for edit
I have been following the salesforce Recruiting App tutorial, and reached the section on creating a public site:
http://www.salesforce.com/us/developer/docs/fundamentals/Content/adg_composite_app_public_sites.htm
I have built a simple page to display open jobs as described here:
http://www.salesforce.com/us/developer/docs/fundamentals/Content/adg_composite_app_create_public_jobs_try_it_out.htm
This is displaying the open jobs correctly when I view it through our "internal" URL: https://c.ap1.visual.force.com/apex/PublicJobs
But when I view this same page through our "external" URL: http://servian-developer-edition.ap1.force.com/careers, the page still renders, except that now the list of jobs is empty.
I don't think this is a permissions error, as if so it would surely prompt me to log in. What do I need to do to make the data show on the "external" URL?
Make sure the "guest" user for the site has Read permission for the Positions object on its profile. You can't access the profile for the guest user through the normal Profile list page in Setup; instead, click on the Public Access Settings button from your site's detail page. On the profile, go all the way to the bottom of the page and make sure the Read permission is checked. If its still not working, ensure the Field Level Security settings also correct for that profile. The FLS settings are controlled about mid-way down on the same page.
In addition to above, ensure the object, if it is a custom object is in "Deployed" status. This fixed the issue for us.
Additional Information (from help.salesforce.com):
While developing a custom object or external object, you might not want users to see and interact with it. Because users might get frustrated with changes in layout or lose data when you delete custom fields, control visibility of the new object until you are finished.
Use the Deployment Status setting in the object definition to control when users can see and use the object and its associated custom tab, related lists, and reports.
Choose “In Development” as the Deployment Status when first creating your custom object or external object. Doing so hides it from users while you are designing and testing it. Only users with the “Customize Application” permission can see the object tab, search results, related lists, and report data types.
Change the Deployment Status to “Deployed” when you want to allow all users to use the object and any associated custom tab, related lists, and reports.
If you make more enhancements after deploying a custom object or external object, you can change the Deployment Status back to “In Development.”
I am writing a simple salesforce app that requires app-level and user-level configuration. I have created custom objects for these settings, but cannot figure out how to add links to the Setup page (Personal Setup and Customize) so that the settings can be managed.
Quite a lot of research, and a question on a salesforce board, have left me none the wiser. I have seen a couple of scripts on the web that hack the setup sidebar with javascript (eg http://userscripts.org/scripts/show/95361) ... but this can't be the right way to do it surely?
Thanks
Jim
You are unable to do this without hacking because Salesforce want it so that you don't require over-explicit setup of any app you create - they want you to make it data-independent and in fact it may fail a security review if it is data dependent. It will also likely cause you headaches in correctly unit testing the app.
My suggestion would be to have a set of custom pages which are linked to on the home page for a user which display if they have no current values (so the first thing they see on the home page when they login for the first time is a "Hey, before you use this app you need to do some configuration through this handy wizard" and then block access to other areas of the app (i.e. display warning messages on other pages) if the app has not had this data setup.
That way you are not hacking and are providing a nice user experience around the extra setup.
Paul
DO you just want to add a new TAB on the top menu that links to the Edit page for your new sObject?
If so:
Goto setup https://cs3.salesforce.com/ui/setup/Setup
Click on 'Create' > 'Tab'
Pick the sObject you want the tab edit, the click next until you save the new tab.
There is no supported way to augment the Setup menu.
You should probably be using Custom Settings for what you are describing - they were designed for app-level and user-level configuration, and are available from Setup.
Otherwise, if it really is custom setup that requires fancier logic / UI / etc, you may want to do what many SFDC ISV's do and ship your app with its own configuration tab that's hidden, and/or custom VF page that manages app settings.