Real F1 Online Help for Your Add-On?

Each time I am involved in some way with a Dynamics NAV partner with respect to Help for their add-on, inevitably the issue of wanting to have their help on-line pops up. There are many things to be said about this which I am not going to address in this post, but who knows later. Here I am picking out just one item:

How to activate (real) on-line help through the F1 key without too much fuss for both partner and end-user?

The F1 help, called context-sensitive help, is build into the NAV platform (client and application server). Once the user presses F1 the platform determines the context, i.e. the object help is wanted for, and links it through the master help project to the right help topic in the right help project. Details of this mechanism can be exposed using ShowHelpID as discussed in my previous post. Crucial to the connection between platform and help system is the .hh file as I explained in another post regarding help.

For each object for which F1 help is available, the .hh file holds one entry with the following format:

 <Event Source=”addin_a.hhp”>
    <ID>T_123456733_7</ID>
    <Master>master.chm</Master>
    <Subordinate>addin_a.chm</Subordinate>
    <Topic>html/T_123456733_7.htm</Topic>
    <Priority>5000</Priority>
    <Window>$global_Main</Window>

</Event>

The format above is using the example for field 7 in table 123456733 in help project addin_a.

By manipulating the value of <Topic> element we can let the help system act differently. For example we could change it to:

    <Topic>html/T_123456733_207.htm</Topic>

Pressing F1, while on field T_123456733_7, will now show the topic file T_123456733_207.htm (assuming it exists in the addin_a help project). In the same manner you could manipulate the <Subordinate> element so that it refers to another help project.

“Well, great, Luc,” you might utter. “Where does this bring me in my want to activate real on-line help?”

Wouldn’t it be great to feed the <Topic> element with an URL?

“Sure, and is this the holy grail for our issue?”

You really want to know? Sure?

… No, unfortunately. The system does not know what to do with the URL. [:$]

“So why the fuss?”

Well, this would have been the simplest answer to the question above. Therefor I have asked MS to consider to enhance the help system so that it can execute a URL provided in a <Topic> element.

If you also consider this a good enhancement join me and give your vote on ms connect. GO AND VOTE!

Thanx in advance. [Y]

4 Comments

  1. @Sean: good to "see" you again 😉

    Thanx for the tip. Going to try it. However, still not as efficient as I would like to as this does not allow me to redirect by using aliases, which would be easier to set up and maintain.

    Guess the <META HTTP-EQUIV="refresh" CONTENT="0;URL=http://www.microsoft.com"> is just an example? 😉

  2. Just checked Sean's suggestion: works indeed, however there seems to be one "but".
    Filling a context-sensitive topic file with the following:

    <html>
        <
    head>
            <
    meta http-equiv="refresh" content="0;url=…">
        </head>
    </html>

    … does not create an entry in the .hh file, so to topic will not be called when pressing F1.
    The following does the trick:

    <html>
        <
    head>
            <
    meta http-equiv="refresh" content="0;url=…">
            <title>($ object token $)</title>
        </head>
    </html>

    And of course still we need to create a topic file for each objects we want to online help for. And not like I wrote above: "… this does not allow me to redirect by using aliases, which would be easier to set up and maintain."

Leave a Reply

Your email address will not be published.