Displaying HTML Pages within APEX

As a large company we already have a number of software products available using different technologies, like Oracle Forms. Because of this we have a number of teams, like the Technical Authoring Team, who are dedicated to providing a service for all the products. The Technical Authoring Team provide help pages, user guides and release notes for all products. The Configuration Management Team provide installation guides, packaged software and upgrade support for all products. Now that we’re starting to use APEX we don’t want an additional overhead of having to provide a different service specifically for this product. However, as a web application, users want to be able to access things like Help documentation easily and would want to be able to add to this documentation.

For our other products the Tech Authoring Team produce HTML pages using RoboHelp, one page for every web page or Oracle Form we’ve developed. Our Oracle Forms product has a table that lists the form name and the associated HTML page for the help. There is a link in this product which opens up an Internet browser on the HTML page stored.

The Tech Authors want to continue using RoboHelp to produce a HTML page for every application page in our APEX application. The users want a link to view this web page within the application and add their own help to detail their business process or provide custom notes for the page.

To keep everyone happy I’ve added a navigation bar entry to take users to a generic Help page (Page 3 in the application) setting a hidden item called P3_PAGE_NO on this page to be the page number of the page you’ve come from. I’ve also created another hidden item to hold the name of the HTML page that the Tech Authors have created. We’ve yet to decide if the HTML pages will be the page number e.g. 1.html, or the name of the page e.g. home.html.

There is then a HTML region which uses iFrames to display the Tech Authors HTML page within the APEX page. The code in this region is as follows:

<iframe id="companyhelp"

src="/i/themes/company/help/index.html"

width="100%" height="500">

</iframe>

<script language="javascript">

page = document.getElementById("P3_HTML_PAGE").value

if (page) {

url="/i/themes/company/help/"+page+".html"

document.getElementById("companyhelp").src=url

}

</script>

If P3_HTML_PAGE holds the name of a HTML page then this HTML page is displayed. If it doesn’t then index.html is displayed, which currently says “No Help is available for this page.”

To allow users to add to this Help, I’ve created a basic table holding the page number and custom help. There is another region on this page displaying the information from this table for the page in P3_PAGE_NO, with an edit link taking the user to another page with a HTML editor field which allows then to enter and update their version of the help they want to provide users.

When changing to use new technologies it is often unreasonable for all the people within a company to change the way they work. Understandably our Tech Authors want to continue to use RoboHelp to create HTML pages instead of writing pages or adding Help to the APEX Application. Using iFrames in the way detailed above has allowed the Tech Authors to continue working in the way they are comfortable with but users will still see this help with the same look and feel as if we had written it within the APEX application.

Sara

Sara Blair is a freelance Oracle developer with over 10 years Oracle experience. She has been working with Oracle APEX for nearly 4 years since htmldb 1.5, and is available to hire through Silvercore Solutions.

Comments cannot be submitted.