Customer Portal

Dynamic Forms - Fixing Oracle's Sample DynamicProductCategoryInput Widget

CX Version: 

Customer Portal's Dynamic Forms functionality is extremely useful, but the sample code provided by Oracle is broken right out-of-the-box due to a CP defect.

How to open an External Page from a Syndicated Conditional Chat Link

I'm writing a quick article in response to a question I received on another post inquiring if it was possible to open an external webpage instead of a Customer Portal page when the "Chat Now" link is clicked. Using standard functionality, this isn't possible, but using the techniques I've described in my other Syndicated Widget articles we can modify the core behavior to match our requirements.

Abusable Functions in CP, CPMs, and Custom Scripts

When calling create and update functions from within Customer Portal code, the system requires the use of checks via the RightNow\Libraries\AbuseDetection library method isAbuse(), to ensure the CP endpoint is not under a DOS or similar attack. This is helpful, in theory at least, because it ensures that your CP site is mostly protected from these sorts of attack, but this can cause major headaches when building out more complex solutions. 3 out of 4 scenarios below require some level of workaround, depending on your use-case:

Quick Tip: Encrypted Pass Through Authentication (EPTA) Initialization Vectors

When setting up Encrypted PTA, configuring the correct Initialization Vector in the PTA_ENCRYPTION_IV configuration setting can be confusing. I find the setting documentation misleading unless you really understand what it is asking for.

Per the field documentation:

Security Vulnerabilites in Customer Portal pagesets

If your Customer Portal site has a "mobile" or "basic" directory and associated pages in your "views/pages" directory your site might be at risk; especially if you don't use these pages! For nearly all sites created since the release of CP2, this will be the case unless you've taken manual steps to remove them.

Duplicate Contacts and Unique Fields

In order to reduce duplicate contact records, it would be useful to be able to specify unique contact fields (such as mobile phone number, or a particular custom field), similar to how email addresses are handled as unique identifiers. If the client needs a full-fledged solution for this across their entire system, this is difficult to do from a purely technical level. Most clients simply train their agents to first search for existing contacts and have a business process for merging duplicate contacts when manually found in the system, which is good enough for most.

Fun with Cloud9 IDE and CP3

Today I had a bit of fun with Cloud9 IDE, which is one of the better cloud-based IDEs I've found. It is geared mostly towards front-end web development but has a fully functional Ubuntu OS underneath running in a Docker instance, so you can pretty much do anything.

Quick Tip: Skinning Customer Portal Modal Dialogs

When skinning Customer Portal it is easy to forget the YUI-based modal dialogs unless one happens to pop up during your working session. Most commonly it is the Form Expiration dialog which reminds me that I have additional work to ensure a unified brand experience. This dialog will appear after 5 minutes, which is a long time to wait when testing CSS changes.

New Site Feature: CX Features by Version matrix

Today I published a document that I've been working on for a while; my hope is to extend the benefit I receive to everyone else in the community. This document is a list of Oracle RightNow CX features by version. This will be a living page permanently in the left-hand navigation of CXDeveloper.com. As new CX versions are released, the document will be updated accordingly.

Changing Polling Intervals on Syndicated Conditional Chat

One item that is not exposed in Syndicated Conditional Chat's initialization parameters is the polling interval. The interval is unfortunately hard coded into the widget, but this doesn't mean that you can't control it. There is a widget initialization parameter named "enable_polling"; when this value is set to "false", the widget will not poll the server. This then gives you the chance to write your own polling logic using the syndicated widget frameworks Event system.

This works by subscribing to 2 events

Pages

Zircon - This is a contributing Drupal Theme
Design by WeebPal.