Progressive Disclosure - Putting the User in Control


Published on

This 2-hour tutorial explains the basic principles of progressive disclosure and includes a shoot-out between two tools that offer various levels of support for implementing progressive disclosure in web-based help systems: Adobe RoboHelp and MadCap Flare.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Progressive Disclosure - Putting the User in Control

  1. 1. Progressive Disclosure Putting the User in Control Jang F.M. Graat UA7 1 © 2013 JANG Communication, Amsterdam, Netherlands. This presentation is created for a tutorial first delivered at the tcworld 2013 conference in Wiesbaden, Germany. Photo material is either purchased from one of the available photo stock websites or taken from internet pages that did not indicate any copyright notices.
  2. 2. Who’s Talking ? • Jang F.M. Graat • Tech Comms • Structured Frame • DITA, XSLT, JS, CSS • RoboHelp, MadCap • Minimalist • Philosopher 2 After studying Physics, Psychology and Philosophy it was time for me to get a paid job. Lady Luck put me on a fast track into the high-tech computer industry, where I embarked on a career in technical communication that took me around the globe many times. I have taught myself all I need to know and I specialize in teaching techie stuff to not-so-techie audiences.
  3. 3. Progressive Disclosure Some Everyday Examples 3 Progressive disclosure is not very new, but in the technical communication domain it is not widely used yet. But we all know the principles, which may become clear by looking at some everyday examples we will all know, but might not recognize as being progressive disclosure techniques.
  4. 4. Getting Started 4 The first example is literally when we get started in our daily jobs. Well, most of us get started this way (some keep running all night long).
  5. 5. 5 I like to keep my desktop pretty clean. No shortcuts to dozens of programs or files, as I do not need most of them all the time. My desktop expresses my tendency to minimalism: only show me the info I need right now. After Windows has started, this is what I see. A minimal set of options to choose from. To start an application in Windows, I click on the Start button.
  6. 6. 6 The Start menu shows me the most used applications in a short list. Next to the list are some other areas that I might want to explore, but let’s stick with the applications for the moment. I can start any of these by clicking on the application name.
  7. 7. 7 If I want to open an application that is not in the most-used list, there is always the option view the full list of applications via the All Programs entry at the bottom.
  8. 8. 8 But even this list may become very long and to prevent a lot of scrolling and searching, many applications are organized in separate folders.
  9. 9. 9 Clicking on one of the folders reveals its content. There may be nested folders, so the process continues until I have found what I am looking for.
  10. 10. 10 If I did not find what I was looking for, or changed my mind, I can still return to the previous view via the “Back” option at the bottom. This might seem trivial but is an important aspect of progressive disclosure: you should always offer the user a way back.
  11. 11. 11 One more detail of progressive disclosure in the Windows Start menu is the feature that keeps a list of recently opened files. If the application has such a list, the Start menu includes it and offers a direct way into the list by hovering over the arrow to the right.
  12. 12. 12 From here, I can open a document in the application with one click. The whole process shows how the options that are shown are controlled by me, the user. At every click, another part of the available options are revealed.
  13. 13. Booking a Train Ticket 13 We can see good examples of progressive disclosure on the web, too. The website I will show you offers train tickets via the internet. The design had to enable people to interact with the selling software in more or less the same way that they would when purchasing a ticket from a counter with a human being to interpret what they want.
  14. 14. 14 After entering my point of departure, destination and travel dates, the Deutsche Bahn website shows me a list of available train connections. It immediately includes pricing information when available, plus number of transfers and total travel time. For most purposes, this information is sufficient to make a decision and move toward booking the train ticket.
  15. 15. 15 If I want to see the route and how much transfer time I have between trains, I can click on the arrow in front of the indicated train schedule. This opens a section on the page that was previously hidden. Here I have details about each of the trains available. The information that was already visible is not replaced, and there is always the option to hide the extra info again.
  16. 16. Embedded Assistance 16 Progressive disclosure gets more interesting in areas where the user might not completely know what they are looking for. Early attempts to create so-called Wizards were not always succesful (who ever found Clippy or the cute but stupid little dog in MS Office useful ?). There are some examples where integration between the software, documentation of that software and user assistance have been implemented in just the right way.
  17. 17. 17 This is my MacBook Air desktop. The menu bar shows symbols for basic services, such as the WiFi connection. The symbol itself shows whether I have a connection and how strong the signal is. If there is a problem with the internet, there will be an exclamation mark on the symbol.
  18. 18. 18 If I want to do something about the WiFi connection, I can open the menu via the same symbol. Apart from joining another network or switching my WiFi off, I can also open the Network Preferences page in the System Preferences.
  19. 19. 19 On the Network Preferences page, I can see all network connections with their status, plus a limited amount of information that I might be looking for. There are some general options that I can switch on or off here, and for an option that might not be immediately clear there is a short text to explain what the option will achieve. If I am looking for technical details about the connection, I can click on the Advanced button near the bottom.
  20. 20. 20 This pulls down a panel with multiple pages, each of which has a lot of technical information available. The pages allow making changes and do not offer a lot of extra explanations, as people handling these settings should know what they are doing. Making the pages look more technical does keep newbies from making any changes here. Clicking Cancel or OK makes the panel move up again and returns to the Network Preferences screen.
  21. 21. 21 For the non-techies, a wizard or assistant is included. Clicking the button Assist me brings up a question which type of assistant the user needs, as there may be various reasons why the Network Preferences were opened in the first place. Note that if there is a problem with the connection, clicking the failed network icon allows jumping straight into the Diagnostics wizard.
  22. 22. 22 If I choose to set up a new network, the assistant shows me basic information and asks me to supply a name. The buttons Go Back and Continue are always available. I always have a way to return to the previous step, which is very important in progressive disclosure.
  23. 23. 23 The dialog that opens via the More Info button shows a short description of the parameter that is required in this step of the process. The window of the Network Setup Assistant is not hidden or changed: the panel slides down out of the window’s title bar and slides up again when clicking OK. Nothing in this process should scare the newbie users or give them the impression that they have done something that cannot be undone.
  24. 24. 24 Steps that involve a choice between various options are shown in a language that does not contain too many techie words, or explains those words where needed. Each step in the Network Setup Assistant covers one single choice or one single entry. And there is always a button to show More Info. This is progressive disclosure at its best.
  25. 25. Minimalism Main Principles 25 The paradigm that lies at the basis of progressive disclosure is minimalism. Without redoing my presentation about minimalism at past tcworld events, I will briefly indicate the main principles of minimalism. Those principles should be kept in the back of your mind always, even when you are not working on progressive disclosure.
  26. 26. Action-Oriented 26 First principle: your user assistance should focus on doing things. Users are not browsing your help system because they enjoy doing it and have nothing better to do. Users who call up the user assistance have a problem that they need to solve, and normally they are in a hurry. Don’t explain how a feature works if the user does not need to have that knowledge to succesfully use the feature. I don’t know how a combustion engine works but I can still drive a car.
  27. 27. Support Error Recovery 27 A user may not know that they have made an error until it is too late. You should include enough information so that the user can confirm there was no error (e.g. showing a step result) and indicate what to do when they have discovered something is wrong. A basic technique in Progressive Disclosure that rests on this principle is always providing a way to go back to the previous step.
  28. 28. Reading-to-do 28 This ties in with the first principle: users do not open the user assistance to kill the time, they read the instructions to solve a problem and get ahead with their work. An assistant that takes the user out of their own documents or tasks and merely wants to educate the user based on an abstract example is useless to most users. Wherever you can, allow the user to perform steps and return to your assistant for more information after doing so.
  29. 29. Dynamic HTML HTML, CSS, DOM, JavaScript 29 Good Progressive Disclosure takes a lot of work to implement, and you probably need to do it in close cooperation with the software developers of the application you are documenting. In this tutorial, we are going to look at the basic techniques you can use without depending on the developers’ time and cooperation. The technical components for this level of progressive disclosure are HTML, CSS, DOM and JavaScript. Let’s look at each of them and then at what the combination of these techniques can achieve.
  30. 30. HTML 30 The first technology that is required is HTML, HyperText Markup Language. Defined in the early days of internet, when there was no World-Wide Web yet. HTML allowed the WWW to come into existence, as it established a standard platform to display information and to create hyperlinks that take you from one document to another (wherever that may be). The above picture is NOT the inventor of the world-wide-web, Mr Tim Berners-Lee.
  31. 31. 31 HTML should be familiar to everyone in this audience. Basically, each element is wrapped in tags that determine the formatting in a browser. The above example is what we will be using throughout most of this tutorial. It shows a task with a number of steps and substeps.
  32. 32. 32 This is what the HTML looks like in my Firefox browser. Nothing special, but then we have not added any fancy stuff to it yet, and there are no hyperlinks (as we do not need them here).
  33. 33. Cascading Style Sheet 33 The next component we need to make things interactive is a CSS. The name derives from the top-down manner in which styles are defined. Properties for the entire page can be changed for lower-level element types and even for individual elements on the page. The element inherits the properties from the higher-level element but can override them (and pass them down to its own children).
  34. 34. 34 The HTML page can be linked to a CSS that describes the formatting properties of particular elements. In the CSS, there are various ways to address particular sets of elements, such as a list item inside an ordered list (ol li). In the above example, each list item gets the left margin of 20px. When the list item is in an ordered list it will have 10px padding at the top, whereas the top padding is 0px for list items in an unordered list.
  35. 35. 35 The result of this CSS with the same HTML (well, we did put the link to the CSS in) in the same browser is this. The browser takes the properties that are defined in the CSS to override the default formatting properties for the HTML elements it finds.
  36. 36. Document Object Model 36 The DOM describes the organization of elements in your document on an abstract level. It allows the browser to find all elements in a page and know which element is a child or parent or sibling of another. The DOM is a universal roadmap for a structured document and allows software to find their way around the contents of actual documents.
  37. 37. 37 Bringing HTML and CSS together taking the DOM into account. The CSS can pass properties for particular elements in the document via their element tags, their location in the hierarchy, their class attribute and/or their id attributes. This makes for a wide variety of formatting that can be relatively easy controlled and assigned.
  38. 38. 38 The code shown on the previous page, viewed in a browser. The buttons in the menu bar are activated or deactivated depending on where you are in my website. The language buttons take you to the same page in another language. All styling is defined in the CSS.
  39. 39. JavaScript 39 JavaScript was developed to add interactivity to HTML pages. With JavaScript, contents of a page can be changed without loading another page. Many properties of elements of the page can be addressed and changed and actions can be linked to objects on the screen. This gives us the interactivity we need to implement Progressive Disclosure.
  40. 40. 40 The JavaScript code can either be linked to the HTML page or embedded in a <script> element. There is no functional difference between the two. The above code shows how a piece of the HTML page is used as a trigger, and another piece is shown or hidden when the trigger is clicked. Also, the text that serves as the trigger is changed by the JavaScript.
  41. 41. Drop-Down Content 41 The page shown in a browser. Clicking on “Show paragraph” makes the drop-down content appear and changes the text of that paragraph. Clicking the paragraph again reverses the action. Of course, nesting is an option as well: content in the hidden text may be used as a trigger to show another piece of content, such as an image. Also, icons or images can be used as triggers to reveal hidden content or hide it again.
  42. 42. Layered Content 42 With CSS3, layers were introduced. Basically, the 2D world of the screen turned into 3D at that moment, as sections of the webpage were given an optional depth position index. Placing a layer on top of others but making it hidden allows a trigger to make it appear. Don’t forget to include a method to make it disappear again.
  43. 43. Making it Work in Adobe RoboHelp HTML 10 43 Now that we have seen the basic principles at work in Progressive Disclosure (showing and hiding content without leaving the page), let’s see how this can be implemented using Adobe RoboHelp HTML. The tutorial includes a live demo, but this PDF includes screenshots of the stages instead.
  44. 44. 44 Drop-Down Text RoboHelp offers drop-down text since a long time. This was part of DHTML, an unofficial extension on early HTML using JavaScript to make it work. With a little effort, you can get around some of the shortcomings of this implementation and make it look like the goal we set out to achieve.
  45. 45. 45 enter the always-visible text RoboHelp HTML allows you to enter Drop-Down text in a small editor window. This is easiest done when the disclosable text is not there yet. So we start with a topic with only the steps that are shown when the page will be loaded.
  46. 46. 46 select the hotspot text and create the drop-down Select the step text and choose Create Drop-down Hotspot and Text from the DHTML menu.
  47. 47. 47 enter the drop-down text A small editor window appears in which you can enter the text to be shown or hidden when the trigger is clicked. The editor allows most of the actions you would do in the main editor window, so you can insert images, links to other pages, and insert a nested drop-down text.
  48. 48. 48 click outside mini-editor to hide the drop-down text Click outside the mini-editor to close it. A disadvantage is that the drop-down text is no longer visible in your source. The styling sort of indicates it, but might also be applied manually or indicate a glossary term, a pop-up link or expanding text. It takes several clicks to see the hidden content in your source material.
  49. 49. 49 drop-down text can be nested It is possible to enter multiple levels of drop-down text. In the mini-editor, select the word(s) that should work as the trigger and choose the Create Drop-down Hotspot and Text command again. As far as I can tell, there is no limit to the nesting levels (but your users may not like all the clicking).
  50. 50. 50 not only text can drop down The mini-editor allows most functions that are normally available, so you can insert an image instead of text (or use both).
  51. 51. 51 resulting WebHelp in a browser The resulting WebHelp shows like this. The first and second step each have their substeps hidden. Clicking the step opens and closes its substeps.
  52. 52. 52 resulting WebHelp in a browser The drop-down text appears immediately after the paragraph that contains the trigger. In this case, the image appears between the substeps. There is no way to change this in RoboHelp.
  53. 53. 53 Triggers and Targets RoboHelp has another method that should be covered here: triggers and targets. The names were maybe not chosen very wisely, but let’s see how the implementation was done and how it can help us achieve the goal of progressive disclosure.
  54. 54. 54 add target and trigger images Start by adding the target (which must be an image or a table) to your source. Also add a trigger (which must be an image) to the text line. I chose to add a small question mark at the end of the first substep.
  55. 55. 55 select the trigger image Selecting an image makes the so-called cable drum appear. The drum is green, meaning it is not connected to a target yet.
  56. 56. 56 pull a link to the target Drag the mouse from the cable drum to the target. When a valid target is reached, its bounding box is shown in green. The target is selected when releasing the mouse.
  57. 57. 57 select the show/hide effect Choose one of the available effects for the target appearance. I suggest NEVER using anything other than Show/Hide. Your help system is not created for entertainment but for usefulness.
  58. 58. 58 ready to build the output The target is marked as being connected to a trigger. Now we can build the WebHelp again.
  59. 59. 59 resulting WebHelp in browser The resulting WebHelp page in a browser. The empty space is the space taken up by the still invisible target.
  60. 60. 60 clicking the trigger makes the target appear/disappear Clicking the trigger image makes the target appear. Clicking again makes it disappear.
  61. 61. 61 Useless for my Goal Since the target takes up space even when it is hidden, this feature is useless for progressive disclosure. If RoboHelp would support layers, I could position the target on top of other content so that there would not be empty space. But layers are not supported. Also, I cannot use words or sentences as triggers, and I cannot use anything but images or tables as targets.
  62. 62. 62 Perfecting the Appearance Instead of words or entire sentences behaving like the hotspots, I wanted to use a number of small icons. I could have chosen Wingdings or Zapf Dingbats, but I don’t want to run the risk that an unavailable font causes garbage on the screen in your browser. Also, I want to apply some background coloring and padding to the drop-down text to make it stand out.
  63. 63. Images ≠ Text 63 In RoboHelp, I can only use text as the hotspot for drop-down content. Images can only be used as triggers for targets, and we’ve seen that this feature is useless for our goal. So how do I get over this seemingly impossible dilemma?
  64. 64. 64 select icon image plus space To change the drop-down hotspot into an image, insert the image but make sure to select some text as well (otherwise, the Insert Drop-down Hotspot and Text command remains disabled). A space in front of the image is all it takes to make it work.
  65. 65. 65 The mini-editor also allows formatting of the text that will be revealed, to make it stand out from the surrounding text. All normal formatting options are available. This shows how to add background color (shading) and padding to the drop-down text.
  66. 66. 66 final result in a browser
  67. 67. 67 Using Pop-ups RoboHelp offers various ways of creating pop-up elements. These may be useful for progressive disclosure as they do not take the user off the page - which is one of the defining principles of progressive disclosure.
  68. 68. 68 Select a piece of text (use the trick with the space plus an icon image again) and select “Text- only Pop-up” from the Insert menu. Pros: entering the text is done on the spot. Cons: no images, no styling, no influence on anything except the text.
  69. 69. 69 The result is not overwhelmingly satisfying, but as noted you have no influence on the styling (except if you to some heavy-duty CSS tweaking).
  70. 70. 70 The only other option is to first put the text (including the images, styling etc.) in a new topic (to which you have to apply another master page to get rid of all kinds of auto-insertions by RoboHelp - you may also have to define a separate CSS for this type of topic). Then create a hyperlink to a pop-up. Optionally, you can set the size for the pop-up explicitly (but that takes a lot of trial and error).
  71. 71. 71 Without the heavy-duty CSS work, the result, again, is not something that makes me very happy. I seriously miss the layering techniques in RoboHelp. You could perhaps bring those in via the CSS backdoor but that level of tweaking is beyond the scope of this tutorial.
  72. 72. Making it Work in MadCap Flare 9 72 Note: the output shown in some of the following slides was created using a trial version of MadCap Flare 9. The trial randomly changes characters in the output. This is not a bug in the software or an effect of the techniques I have used.
  73. 73. 73 Drop-Down Text First technique to be checked is, again, the drop-down text.
  74. 74. 74 enter the always-visible text MadCap Flare offers the same Drop-down text option as RoboHelp HTML. To use this option, I first create the text that should always appear on the page. These are the main procedure steps.
  75. 75. 75 select the drop-down hotspot Before adding substeps, I have to create a drop-down text placeholder for them. Select the text that should become the trigger for the drop-down text to appear. Then make sure the Insert ribbon is shown and select Drop-Down Text in the Text section of this ribbon. NOTE: it has to be a <p> to work. You cannot create a Drop-Down Text when selecting a <li> or a single word.
  76. 76. 76 Unlike RoboHelp HTML, the editor that appears does not allow entering the drop-down text itself. It only allows selecting part of the already selected text as the drop-down hotspot. This does make the dialog just a little superfluous. Just click OK to insert both the hotspot and the drop-down placeholder text.
  77. 77. 77 drop-down text placeholder is added MadCap Flare adds a so-called toggler image in front of the selected hotspot text and makes the selected text appear as a clickable link. The drop-down placeholder text is shown directly below the paragraph that holds the hotspot. This paragraph can now be edited.
  78. 78. 78 edit the drop-down text The paragraph can be changed into anything, such as a bullet list or a complete section.
  79. 79. 79 build the primary output Once the drop-down text is finished, select the Project ribbon and click Build Primary to generate output.
  80. 80. 80 If the Build did not generate any errors, click View Output to see the resulting page in your browser.
  81. 81. 81 resulting WebHelp in a browser The first step with substeps in a drop-down section shows up like this. Both the toggler image and the step text are clickable and make the drop-down text appear or disappear.
  82. 82. 82 resulting WebHelp in a browser The toggler image is replaced by another one that shows the hidden content is now shown.
  83. 83. 83 Using Togglers Instead of using the standard Drop-Down Text method, which has its limitations, MadCap also offers a more intelligent way of changing the visibility of items on the screen. This is done by inserting Togglers and connecting them to named elements.
  84. 84. 84 enter the target text for the toggler first When using togglers, the destination for the toggler has to be available beforehand. So I enter the substeps in step 2 first.
  85. 85. 85 set a name (identifier) for the target The toggler is connected to the target by an identifier, which has to be set before I can link to it. Select the entire element that should be shown or hidden, make sure the Home ribbon is visible, and select the Name option in the Attributes section of the ribbon.
  86. 86. 86 Give the element an intelligible name, so that you will be able to find it later, when linking the right toggler to the right target.
  87. 87. 87 flag symbols indicate named elements The unordered list with substeps is now named. This is shown by a flag symbol (which does not appear in the output).
  88. 88. 88 set the location to insert the toggler I want to add the toggler at the end of the step, so I place the cursor there. Make sure the Insert ribbon is visible and select the Toggler function in the Text section of the ribbon.
  89. 89. 89 The Toggler mechanism inserts a pretty stupid text “Click Me!” and allows you to point to the named target that should be shown or hidden when the toggler is clicked. Do not worry about the text at this point, as it remains editable and we will replace it with an image in the end. Click OK to insert both the toggler image and toggler text and link it with the named target. The properties of the named target are set accordingly.
  90. 90. 90 replace “Click Me!” but leave one space To replace the stupid “Click Me!” toggler text with an image, you have to take a little care. Selecting the entire text and then inserting an image (replacing the selected text) removes the toggler as well. You can either insert the image first and then remove the text or remove the text but leave at least one space before inserting the image.
  91. 91. 91 insert the icon image in the toggler The image is now shown next to the toggler image. Switch to the Project ribbon to generate the Primary Build again.
  92. 92. 92 resulting WebHelp in a browser The resulting page in my browser. Both the toggler image and my own image are shown at the end of the step.
  93. 93. 93 resulting WebHelp in a browser Clicking either the toggler image or my own image (or the space inbetween) makes the hidden text visible. Note that with this mechanism, the hidden text does not have to be immediately below the toggler, as is the case with Drop-Down Text.
  94. 94. 94 Toggler hotspots and targets can be nested, as shown in the above example. Each element that shows a flag is a potential target.
  95. 95. 95 Each toggler can be connected to one or more targets. This allows having one global “Show/ hide all substeps”, or allowing the user to select their expertise level with just one click.
  96. 96. 96 final result in a browser
  97. 97. 97 Perfecting the Appearance Even though the automatic toggler images are not completely off the mark, they are all the same. I want to use the image to indicate the type of information to be disclosed. So I added my own icons. This makes the togger images obsolete - so I need to make them go away.
  98. 98. 98 edit the Master Stylesheet The automatic toggler images must be removed in the Master CSS. This can be opened via the Project ribbon.
  99. 99. 99 Scroll down the Styles list and select the “MadCap | toggler” class. The properties are shown to the right (choose “Show Assorted Relevant Properties” above the list). Make sure both the “mc-open-image” and the “mc-closed-image” are set to (none). Save the style sheet and rebuild the target to see the effect of this change.
  100. 100. 100 resulting WebHelp in a browser This is the resulting page in my browser. Note that the toggler image for the drop-down text is not changed, only the one for the toggler hotspot has been removed. My image now functions as the hotspot.
  101. 101. 101 resulting WebHelp in a browser Clicking the hotspot image makes the target element visible. Clicking it again hides the target element. The element can be anywhere on the page, as the toggler is linked to the target via identification.
  102. 102. Conclusions Pros, Cons and Feature Requests 102 My conclusions are based on this trial in making progressive disclosure work only. For all other purposes, there may be other lists of strengths and weaknesses. Also, I must note that I have slightly more experience in using RoboHelp than I have in using MadCap Flare.
  103. 103. Drop-down text editing Multi-screen target builds Control over positioning Pop-ups Triggers and targets Layers instead of pop-ups 103 RoboHelp HTML 10
  104. 104. Changes to CSS Togglers Showing/selecting blocks Moving content around Pop-ups Layers instead of pop-ups 104 MadCap Flare 9
  105. 105. Questions ? 4everJang 105 If you need more info, advice, or training on any of the aspects covered in this tutorial, feel free to contact me. I offer in-house training and I do projects covering all aspects of bringing valuable information to users in a minimalist paradigm - maximizing the usefulness.