Using CSH API to switch between online and offline help

Tuesday, March 1 2011 @ 11:36 AM, By Tulika Garg


Many a times technical writers have a requirement to provide both the online and offline help content with their application. While offline content has the advantage of being available even if user has no network connectivity, online content has a lot of other advantages. Technical writers can keep updating online help content and incorporate fixes in documentation. Also, usage of online help content by users can be tracked and used to enhance the quality of documentation.

So to get the best of both the worlds, technical writers would like their application help to check for network connectivity and then launch online/offline help accordingly.

This way of integrating offline/online help is popularly known as “Airplane Help”.

Using RoboHelp, technical writers can achieve this very easily with following configuration:

1)      Online WebHelp Pro hosted on RoboHelp Server, acting as the primary help system
RoboHelp Server logs usage of help content and provides many useful reports like “Frequently Viewed Topic”, “Frequently Searched Terms”, “Frequently Accessed CSH” etc.

2)      Offline WebHelp installed with application, acting as the backup help system in case of no network connectivity

3)      CSH API to launch context sensitive help from application

C++ CSH API provided with RoboHelp is installed with RoboHelp at “<RoboHelp Install Location>\CSH API\C++”. To enable context sensitive help calls from your application, technical writers need to provide this VC++ project to the application developers who need to include it in their application.

Let’s consider following configuration:

1)      Online WebHelp Pro hosted at http://myhelpserver/robohelp/server?project=myApp

2)      Offline WebHelp available at “C:\Program Files\myApp\help\help.htm”

Before making any help calls from the application, application need to define the association between the offline and online help content. CSH API stores this association and when actual help call is made, it checks to see if the primary/online help system is available and if yes then help is served from primary/online help system. Otherwise help is served from backup/offline help content.

CSH API provides an API for associating primary/online help with backup/offline help:

//        [in] a_pszPrimaryHelpSource        – primary server-based help system
//        [in] a_pszBackupHelpSource        – backup help system
void RH_AssociateOfflineHelp(const _TCHAR * a_pszPrimaryHelpSource, const _TCHAR * a_pszBackupHelpSource);

So for the above example, application developer will need to make the following call:

RH_AssociateOfflineHelp(“http://myhelpserver/robohelp/server?project=myApp“, “C:\Program Files\myApp\help\help.htm“);

Now, to launch context sensitive help for any ID( for example 5) , developer should make a call like

RH_ShowHelp(GetSafeHwnd(),http://myhelpserver/robohelp/server?project=myApp, HH_HELP_CONTEXT, (DWORD)5);

This API first checks the availability of help system provided in the RH_ShowHelp API (i.e. http://myhelpserver/robohelp/server?project=myApp) and if it’s available, shows context sensitive help from there. If the online help system is unavailable, then the API checks if any backup help system was associated with this help system and in our case it was (“ C:\Program Files\myApp\help\help.htm “). In that case the help is displayed from backup help system.

Adobe RoboHelp Team




  • By Peter Grainge - 10:38 AM on March 21, 2011  

    A very useful blog.
    Presumably ordinary webhelp can also be used?

    • By Tulika Garg - 6:42 AM on March 24, 2011  

      Yes Peter, you are right. Ordinary WebHelp hosted on some web server can also be used as Primary/Online help source.

  • By Christine Brouillard - 3:32 PM on July 13, 2011  

    Can this also be accomplished without RoboHelp Server? Can some of the content be online and some be offline?

  • By Shuab - 8:53 PM on November 16, 2011  

    Hi Tulika,

    The link you provided above http://myhelpserver/robohelp/server?project=myApp
    doesn’t work.

    I have a project running on tomcat v7. From my application when I click the ling using the
    RoboHelp_CSH.js it does nothing. It doesn’t even give any error message.

    The configuration I have in the application is:
    javascript:ShowWebHelp_Server(‘ Help’, HH_HELP_CONTEXT, ${helpId});

    Where does the CSH API located. Is it in the server? My tomcat and RoboHelp v9 is in win server 2003.

  • By Tom - 8:02 AM on March 24, 2012  

    I have just installed LR4 several times and Community Help several times. I am unable to get Offline Help to work, with only access to online help. What’s the glitch?

  • Categories

  • Archives

  • Authors

  • Useful Links

  • Recent Comments

    • Dieter Gust: So I found it out myself: C:\Program Files (x86)\Adobe\AdobeFrameMaker201 5\fminit\ditafm\DITA-OT\doc...
    • Dieter Gust: In the DITA-OT 2.1 version a rudimentary HTML5 output is included. Add the following entries in...
    • Dieter Gust: Which fonts do you recommend for Thai and Farsi? As far as I can see special Adobe fonts for these...
    • Bjørn Smalbro: Hi Welcome aboard to the new folks! I do have a couple of questions; 1: I have every sent in my...
    • Dieter Gust: Kapil How can I check the DITA-OT version which is installed with FrameMaker?