Fix for links in lists.
[Worg.git] / code / org-info-js / index.org
blobdc77736e7de186997b173d065a58bd19ca35bfe6
1 #+STARTUP: align fold nodlcheck hidestars oddeven lognotestate
2 #+TITLE: EMACS ORG-INFO.JS
3 #+AUTHOR: Sebastian Rose
4 #+EMAIL:
5 #+LANGUAGE: en
6 #+OPTIONS: d:nil
7 #+INFOJS_OPT: path:org-info.js
8 #+INFOJS_OPT: toc:nil ltoc:above view:info mouse:underline buttons:nil
9 #+INFOJS_OPT: up:http://orgmode.org/worg/
10 #+INFOJS_OPT: home:http://orgmode.org
11 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
13 * The Name of the Game
15   org-info-js (subsequently called /the script/) implements part of Emacs Org-mode
16   in it's XHTML-exported files, allowing them to be rendered and browsed in a
17   linuxdoc/texinfo style.
19   This documentation is one XHTML file, exported from one *.org file using a
20   single keyboard shortcut. No additional postprocessing was done.  There are no
21   external dependencies and the script is small and fast, even for large files.
22   It is used on the [[http://orgmode.org/Changes.html][org-mode site]] to display =ORGWEBPAGE/Changes.org= which
23   consists of more than 220 sections.
25   If you don't mind using it despite the /health warnings/ we wish you good luck
26   and hope the fun will outweigh your effort.
28   There are some drawbacks though. It is currently not possible to
29   open internal links in another tab (e.g. using middle click in
30   Firefox) due my poor JavaScript knowledge. This is not very high on
31   my TODO list since the history mechanism of the script is a good
32   alternative to tab usage.
34   Go to the next section by pressing '=n='.
36   Find out about shortcuts in section [[#shortcuts][Shortcuts]] (and come back here
37   pressing '=b='). In addition, '=?=' will show all shortcuts available.
39 ** <<<Download>>>
41    - A list of Changes can be found [[file:changes.org][here]] (separat file).
42    - Download the [[file:org-info.js][minified version]] or the [[file:org-info-src.js][sourc code]].
43    - Create the minified versions from the sources using the [[file:Makefile][Makefile]] and a
44      little [[file:sed.txt][sed script]].
46    Development of the script takes place on github
47    (http://github.com/SebastianRose/org-info-js/tree/master), but every working
48    release is published here on Worg synchronously. That said, you can follow
49    the development by tracking the Worg repo as well, available at
50    [[http://repo.or.cz/w/Worg.git]].
52 ** <<Terms used throughout this Document>>
54    The script knows three different so called /view modes/. One may toggle the
55    view mode by pressing '=m=' or click the /toggle view/ link the script adds to
56    your pages. Currently three view modes exist:
58    + *info view mode* ::
59      This mode displays the sections one by one, paged like the typical
60      linuxdoc or texinfo files. This is the view mode you should face when
61      first visiting this documentation.
63    + *plain view mode* ::
64      This mode displays the entire file. In this mode the sections are foldable
65      by clicking the headlines or pressing '=f=' (fold). The entire structure
66      of the document my be (un-)folded using '=F='. You may determin what's
67      visible on pageload.
69    + *presentation mode* ::
70      This mode displays sections one by as slides. Still
71      very rustic and experimental. Rick Moynihan embarked and we plan a separat
72      tool for presentations, but...
74    The table of contents (*TOC*) is required, albeit it may be hidden (CSS). The TOC may
75    be visited using '=i=' (index) regardless of its visibility.
77    A *section* is everything with a headline.
80 * <<Features>>
82 ** Appearance
84    + *Toggle plain view, info view and presentation* ::
85      One can click the script-generated links in info view mode to read through
86      the whole file page by page. By clicking on '/toggle view/' (or pressing
87      `m´) you can switch between info and plain view mode. The presentation mode
88      is very rudimentary and just a quick hack realy. Press 'x' to see it.
89    + *Keep place in file when toggling* ::
90      When changing the view mode via the '/toggle view/' links, the reader gets
91      the same part of the document presented after the view change as he saw
92      before.
93    + *Cut the TOC* ::
94      You may cut the table of contents to a certain depth. The splitting of the
95      document is not affected by this option. Hence you might set the level of
96      headlines to 4, but cut the TOC to show only the first two levels.
97    + *Optional subindexes* ::
98      The script optionally creates subindexes under the headline of a section
99      containing subsections not exceeding =org-export-headline-levels=. This
100      was done to get a more texinfo/linuxdoc kind of feel and a better
101      orientaton.
102    + *Startupview customizable* ::
103      Choose how to display the document on load. Info-like or plain and more.
104    + *Toggle links everywhere / only on top* ::
105      You may choose to display the '/toggle view/' links above every headline
106      or just next the current sections headline.
107    + *Numbered pages* ::
108      In info view mode every page gets a page number starting from one.
109    + *Markright alike headings* ::
110      Info view mode only. Similar to the =\markright= command in LaTeX
111      the Title of the current sections parent appears on top of each page. In
112      subsections this heading can be use as link up to start of the parent
113      section (see top of this page when you're in info view mode). You can move
114      to the parent section by pressing `u´ (up).
115    + *Tooltips* ::
116      Moving the mouse on the navigation links shows a tooltip with name of
117      next/previous section.
118    + *Hide TOC* ::
119      The TOC can be hidden completly. Hitting '=i=' still will show it. When
120      showing the TOC hitting '=i=' any navigation command ('=n=', '=p=',
121      '=s='...) will trigger an history-back. Thus the TOC will not get in your
122      way when navigating the history later on.
124 ** Keyboard navigation
126    + *Easy keyboard navigation* ::
127      See Section [[#shortcuts][Shortcuts]] for a list of shortcuts.
128    + Navigation history ::
129      Navigating a file through the keyboard shortcuts is recorded in an internal
130      history. You may go back and forth in this history. Once an end is reached,
131      org-info.js tries to go back/forth in the browsers history. If you move
132      back to a previous visited file that uses the script, you will return to
133      the place you left the file. Thus following links in published files feels
134      like following footnotes.
135    + *Customizable features* ::
136      All features are customizable simply by setting up your export options
137      template (see [[#setup][Setup]]).
138    + *Folding* ::
139      Emulates the way of folding in emacs Org-mode. Mouse supported.
141 ** Searching
143    + *Full text-search with highlighting* :: Search forward, backwards, repeated
144      search... (experimental). Simple regular expressions are supported. Try to
145      search for =a[e-h].*n= for example. All searches are case
146      insensitive. Grouping is not supported. We couldn't search for round
147      brackets otherwise. Supported are wildcards (e.g. =.*=) and ranges
148      (e.g. =[a-g]=). Sometimes only one match is found between to HTML tags. The
149      longer the expression, the better the matches.
150    + *Occur mode* ::
151      As experimental as the text-search, but I love this one. You may link to a
152      file using this script like this: =index.html?OCCUR=java=. Use regular
153      expressions likewise.
154    + *Tags index* ::
155      '=C=' shows a table of contents based on tags. Inherited tags are not
156      supported yet. This was an [[http://lists.gnu.org/archive/html/emacs-orgmode/2008-07/msg00434.html][idea of Rick Moynihan]].
158 ** Miscelaneous
160    + *Inter-linking* ::
161      The exported pages can be linked to the homepage and an directory index or
162      some other sort of parent file.
163    + *Adjusted internal links* ::
164      Internal links to section headings are automatically adjusted to work with
165      this script. When following such internal links, one may go back again
166      using '=b='.
167    + *Detect the target in the URL* ::
168      If the URL is suffixed by '=#sec-x.y.z=' that section will be displayed
169      after startup.
170    + *Structure is taken from export preferences* ::
171      The paging is done according to your setting of
172      =org-export-headline-levels=. Scanning the TOC is a good way to get
173      around browser detection. An option to hide the TOC exists.
174    + *Startup information* ::
175      Show a little message on page load to tell the visitor about the script
176      usage.
177    + *Wrap text before first headline* :: This is a temporary fix for the missing
178      =<p>= element around the text before the first headline, available since
179      version 0.0.7.3a (fixed in current Org-mode versions). If you export with
180      =skip:nil=, you may add this to your stylesheet:
181      : #text-before-first-headline {color:red;font-weight:bold;}
184 * Shortcuts
185   :PROPERTIES:
186   :CUSTOM_ID: shortcuts
187   :END:
189   The visitor of this file (and every XHTML-exported org file that includes the
190   script) may use the mouse or the following keys to navigate. '=?=' should give
191   you a list of shortcuts.
193   The script always tries to keep the last selected section visible. This is
194   somewhat strange when scrolling, but really helpfull for keyboard navigation.
196   The TOC is handled specially, when hidden. If you press '=i=', the TOC is
197   displayed. Any subsequent key press goes back to where you've been before. The
198   TOC does not show up the history. Same applies to the keyboard help.
200   | Key       | Function                                                |
201   |-----------+---------------------------------------------------------|
202   | ? / ¿     | show this help screen                                   |
203   |-----------+---------------------------------------------------------|
204   |           | *Moving around*                                           |
205   | n / p     | goto the next / previous section                        |
206   | N / P     | goto the next / previous sibling                        |
207   | t / E     | goto the first / last section                           |
208   | g         | goto section...                                         |
209   | u         | go one level up (parent section)                        |
210   | i / C     | show table of contents / tags index                     |
211   | b / B     | go back to last / forward to next visited section.      |
212   | h / H     | go to main index in this directory / link HOME page     |
213   |-----------+---------------------------------------------------------|
214   |           | *View*                                                    |
215   | m / x     | toggle the view mode between info and plain / slides    |
216   | f / F     | fold current section / whole document (plain view only) |
217   |-----------+---------------------------------------------------------|
218   |           | *Searching*                                               |
219   | s / r     | search forward / backward....                           |
220   | S / R     | search again forward / backward                         |
221   | o         | occur-mode                                              |
222   | c         | clear search-highlight                                  |
223   |-----------+---------------------------------------------------------|
224   |           | *Misc*                                                    |
225   | l / L / U | display HTML link / Org link / Plain-URL                |
226   | v / V     | scroll down / up                                        |
228   Thanks Carsten, for this beautifull table!
230 * Setup
231   :PROPERTIES:
232   :CUSTOM_ID: setup
233   :END:
235   This section describes how to setup your org files to use the
236   script. [[#the-new-way][Export-Setup - the new Way]] covers setting up org XHTML
237   export with Org-mode version >= 6.02. For those using an older
238   Org-mode version < 6.02 the next section ([[the-old-way][Export-Setup - the old Way]])
239   remains. [[#using-set][Using Set()]] contains a list of all supported options for adjusting
240   the =org\_html\_manager= to suit your needs.
242   See the Download section on how to obtain a version of the script.
244   The first version of this document was created with the new XHTML exporter
245   which was revised by Carsten Dominik in March 2008 (in Org-mode v5.23a+) to
246   better support =XML=.  You can use =M-x org-version= to see which version of
247   Org-mode you have installed.
249 ** Export-Setup - the new Way
250    :PROPERTIES:
251    :CUSTOM_ID: the-new-way
252    :END:
254    The modern way of org export setup provides extra options to include and
255    configure the script, as well as an emacs customize interface for this very
256    purpose. Options set in customize may be overwritten on a per-file basis
257    using one or more special =#+INFOJS_OPT:= lines in the head of your org file.
259    As an example, the head of this org file looks like:
261 #+BEGIN_SRC org
262 ,#+INFOJS_OPT: path:org-info.js
263 ,#+INFOJS_OPT: toc:nil localtoc:t view:info mouse:underline buttons:nil
264 ,#+INFOJS_OPT: up:http://orgmode.org/worg/
265 ,#+INFOJS_OPT: home:http://orgmode.org
266 #+END_SRC
268 *** Using customize
270     To use customize type
271     : M-x customize-group RET org-export-html RET
272     scroll to the bottom and click =Org Export HTML INFOJS=.
274     On this page three main options may be configured. /Org Export Html Use
275     Infojs/ is very good documented and /Org Infojs Template/ should be
276     perfect by default. So I'll concentrate on /Org Infojs Options/ here.
278       + =path= ::
279         Absolute or relative URL to the script as used in in XHTML
280         links. '=org-info.js=' will find the file in the current
281         directory. Keep in mind that this will be the directory of the
282         exported file, eventually a directory on a server.
284       + =view= ::
285         What kind of view mode should the script enter on startup? Possible
286         values are
287         + =info= --- info view mode,
288         + =overview= --- plain view mode, only first level headlines visible,
289         + =content= --- plain view mode, all headlines visible,
290         + =showall= --- plain view mode showing the entire document.
292       + =toc= ::
293         Show the table of contents? \\
294         Possible values:
295         + =t= --- show the toc,
296         + =nil= --- hide the toc (only show when '=i=' is pressed),
297         + =Publishing/Export property= --- derivate this setting from another
298           property like =org-export-with-toc=.
300       + =localtoc= ::
301         Should the script insert a local table of contents below the headings
302         of sections containing subsections? The default is no.\\
303         Possible values:
304         + =t= --- show the local toc below the first text in a section,
305         + =nil= --- hide the toc (only show when '=i=' is pressed). This is
306           the default, if this option is omitted.
307         + =above= --- sho the toc directly under the sections heading.
309       + =mouse= ::
310         Highlight the headline under the mouse in plain view mode?
311         + =underline= --- underline the headline under mouse,
312         + =#dddddd= --- or any valid XHTML/CSS color value like =red= to draw a
313           colored background for the headline under the mouse.
315       + =runs= ::
316         *Obsolete*.
317         Number of attempts to scan the document. It's no risk to set this to a
318         higher value than the default. The =org_html_manager= will stop as
319         soon as the entire document is scanned.
321       + =buttons= ::
322         Affects plain view mode only. If '=t=', display the little
323         /Up|HOME|HELP|Toggle view/ links next to _each_ headline in plain view
324         mode.
326 *** Per File Basis: #+INFOJS\_OPT
328     A single file may overwrite the global options using a line like this:
330 #+BEGIN_SRC org
331   ,#+INFOJS_OPT: view:info mouse:underline up:index.html home:http://www.mydomain.tpl toc:t
332 #+END_SRC
334     Possible options are the same as in the previous section. Additional (?)
335     options include:
337     + =home= ::
338       An URL to link to the homepage. The text displayed is =HOME=.
339     + =up= ::
340       An URL pointing to some main page. The text displayed is =Up=.
342 ** Export-Setup - the old Way
343    :PROPERTIES:
344    :CUSTOM_ID: the-old-way
345    :END:
347    This section describes the old way to setup the script using the
348    =org-export-html-style= configuration. If you own a current version (6.00
349    ++) of Org-mode you should better use [[#the-new-way][Export-Setup - the new Way]] of setting
350    up the export for script usage. You might want to read the sections [[#xhtml][The XHTML]]
351    for more information. [[#using-set][Using Set()]] contains a list of all supported options
352    recognised by the script.
354 *** Using a special * COMMENT Section
356     The second possibility to include the script is to add a special section
357     to the end of your org file (multiple lines possible):
359 #+BEGIN_SRC org
360 ,* COMMENT html style specifications
361 ,# Local Variables:
362 ,# org-export-html-style: "<link rel=\"stylesheet\"
363 ,# type=\"text/css\" href=\"styles.css\" />
364 ,# <script type=\"text/javascript\" src=\"org-info.js\">
365 ,# </script>
366 ,# <script type=\"text/javascript\">
367 ,#  /* <![CDATA[ */
368 ,#    org_html_manager.set(\"LOCAL_TOC\", 1);
369 ,#    org_html_manager.set(\"VIEW_BUTTONS\", \"true\");
370 ,#    org_html_manager.set(\"MOUSE_HINT\", \"underline\");
371 ,#    org_html_manager.setup ();
372 ,#  /* ]]> */
373 ,# </script>"
374 ,# End:
375 #+END_SRC
377       Ensure to precede all the verbatim double quotes with a backslash and
378       include the whole value of =org-export-html-style= into double quotes
379       itself.
381 *** Using customize
383       One could customize the option '=org-export-html-style=' globaly by
384       :M-x cuomize-variable RET org-export-html-style RET
385       and set it there.
387 #+BEGIN_SRC html
388 <script type="text/javascript" src="org-info.js"></script>
389 <script type="text/javascript">
390 /* <![CDATA[ */
391 org_html_manager.set("LOCAL_TOC", 1);
392 org_html_manager.set("VIEW_BUTTONS", "true");
393 org_html_manager.set("MOUSE_HINT", "underline");
394 org_html_manager.setup ();
395 /* ]]> */
396 </script>
397 #+END_SRC
399       This way all your files will be exported using the script in the
400       future. If you publish entire directories, supply an absolute URI to the
401       =src= attribute of the first script tag above.
403 *** Export-Setup per Project
405       Last but not least and very handy is the possibility to setup the usage of
406       the script per project. This is a taylor made passage of the org manual:
408 #+BEGIN_SRC emacs-lisp
409 (setq org-publish-project-alist
410       ’(("org"
411          :base-directory "~/org/"
412          :publishing-directory "~/public_html"
413          :section-numbers nil
414          :table-of-contents nil
415          :style "<link rel=stylesheet href=\"../other/mystyle.css\"
416                 type=\"text/css\">
417                 <script type=\"text/javascript\" src=\"org-info.js\"></script>
418                 <script type=\"text/javascript\">
419                  /* <![CDATA[ */
420                     org_html_manager.setup ();
421                  /* ]]> */
422                 </script>")))
423 #+END_SRC
425       Don't forget to add an export target for the script itself ;-)
427 * <<Linking to Files using the Script>>
429   Just use the ordinary link syntax to link to files that use the script. Append
430   the section to the URL if neccessary:
432   : http://www.domain.tld/path/to/org.html#sec-3.4
434   One may overwrite the author's settings using special suffixes appended to the
435   URL of the script. Here are some examples linking to this section and changing
436   the intial view mode. Currently only the '/internal/' options are used (see
437   [[#using-set][Using set()]] for a list).
439 #+BEGIN_HTML
440     <ul>
441     <li>
442     <a href="index.html?TOC=1&amp;VIEW=info#sec-5"><code>index.html?TOC=1&amp;VIEW=info#sec-5</code></a>
443     </li>
444     <li>
445     <a href="index.html?TOC=0&amp;VIEW=overview#sec-5"><code>index.html?TOC=0&amp;VIEW=overview#sec-5</code></a>
446     </li>
447     <li>
448     <a href="index.html?VIEW=content&amp;TOC_DEPTH=1#sec-5"><code>index.html?VIEW=content&amp;TOC_DEPTH=1#sec-5</code></a>
449     </li>
450     <li>
451     <a href="index.html?VIEW=showall&amp;MOUSE_HINT=rgb(255,133,0)#sec-5"><code>index.html?VIEW=showall&amp;MOUSE_HINT=rgb(255,133,0)#sec-5</code></a>
452     </li>
453     <li>
454     <a href="index.html?OCCUR=java"><code><b>index.html?OCCUR=java</b></code></a>
455     </li>
456     </ul>
457 #+END_HTML
459   *Note* that it is not possible to change the '/HOME/' and '/Up/' links.
461   *Note* also that everything but =[0-9a-zA-Z\.-_]= should be URL encoded if used
462   as an options value.
464 * <<CSS>>
466   Here is an excerpt from the stylesheet for this file. Be carful not to mess
467   things up when trying to position the console.
469 #+BEGIN_SRC css
470 /* Styles for org-info.js */
472 .org-info-js_info-navigation
474   border-style:none;
477 #org-info-js_console
479   color:#333333;
480   margin:0px;
481   background-color:#ffffff;
484 #org-info-js_console-input
486   background-color:#ffffff;
487   border-style:none;
488   color:#333333;
489   padding-left:10px;
490   vertical-align:middle;
493 #org-info-js_console-label
495   font-size:11px;
496   font-weight:bold;
497   padding-left:10px;
498   font-family:Verdana,Arial,sans-serif;
499   vertical-align:middle;
502 .org-info-js_console-label-warning
504   color:#cc0000;
507 #org-info-js_console-container
509   border:1px solid #cccccc;
512 .org-info-js_search-highlight
514   background-color:#adefef; /* emacs default */
515   color:#000000;
516   font-weight:bold;
518 /* END STYLES FOR org-info.js */
519 #+END_SRC
522 * <<Supported Browsers>>
524   The functionality of the script is based on =DOM=. This leads to some
525   incompatibility with legacy browsers. But hey, it's 2009, isn't it?
527   So what browsers are supported then? Well - I don't know for
528   sure. JavaScript™ 1.4 plus =DOM= should make
529     + Netscape 6.0 and higher
530     + Internet Explorer 5.0 and up
531     + Firefox 1.0 ++  - 2.0.0.12 and 3.0 Beta tested
532     + Opera 7.0 and higher - v.9.26 tested.
533     + Safari 1.0
535   I try to test the script before each release in Firefox 3.x.x and Opera 10 on
536   Linux, and in FF 3, IE 6 and Safari on windows. Because of the number of
537   features and browsers, some bugs might remain undiscovered. Please report bugs
538   to the emacs-orgmode mailing list. In most cases we manage to fix them within
539   the next 24 hours.
541 ** <<People reported it works in>>
543    So let's gather the tested Browsers here. Problems are only listed, if they
544    are Browser specific. Let me say it again: we don't wont to support legacy
545    browsers, do we?
547    | Browser           |    Version |
548    |-------------------+------------|
549    | Opera             |      9.26+ |
550    | Firefox/Iceweasel |   2.0.0.12 |
551    | Firefox/Iceweasel | 3.0.2 Beta |
552    | IE                |        5.5 |
553    | IE                |          6 |
555    If you manage to get this thingy working in any browser please let us know, so
556    we can update the above table.
558 * <<Why Do I Need a T.O.C?>>
560   Currently the script depends on the table of contents in the resulting
561   XHTML. The TOC can be hidden though.
563   The main reason is the behaviour of browsers. There is no safe way to detect
564   if the entire document is loaded at a certain point in time. Opera for example
565   returns =true= if we ask it =if(document.body)=. The =init()= function of the
566   =OrgHtmlManager= is aware of the possibility, that not even the TOC might
567   be loaded when this function is called. Hence it should work for slow
568   connections too.
570 * The XHTML
571   :PROPERTIES:
572   :CUSTOM_ID: xhtml
573   :END:
575   End users may consider this section obsolete as of org version 6.00-pre-3,
576   since there is a new configuration interface in org now to setup the script
577   without dealing with JavaScript. It is still here to show the desired look
578   of the head section of the XHTML. Also someone might be interested to use the
579   script for XHTML files not exported from org.
581   The script has to be included in the header of the resulting XHTML files. The
582   document structure has to be exactly the one produced by the current XHTML
583   export of emacs Org-mode.
584   You may pass options to the =org\_html\_manager= by utilising its =set()=
585   method. For a list of options see section [[#using-set][Using Set()]]. This is what the
586   head section should look like:
588 #+BEGIN_SRC html
589 <script type="text/javascript" src="org-info.js"></script>
590 <script type="text/javascript">
591 /* <![CDATA[ */
592 org_html_manager.set("LOCAL_TOC", 1);
593 org_html_manager.set("TOC", 1);
594 org_html_manager.set("VIEW_BUTTONS", "1");
595 org_html_manager.set("MOUSE_HINT", "underline"); // or background-color like '#eeeeee'
596 org_html_manager.setup ();
597 /* ]]> */
598 </script>
599 #+END_SRC
601   To just use the script with the defaults put this into the head section of the
602   XHTML files:
604 #+BEGIN_SRC html
605 <script type="text/javascript" src="org-info.js"></script>
606 <script type="text/javascript">
607 /* <![CDATA[ */
608 org_html_manager.setup ();
609 /* ]]> */
610 </script>
611 #+END_SRC
613   I recommend the use of
615 #+BEGIN_SRC html
616 <script type="text/javascript" src="org-info.js"></script>
617 #+END_SRC
619   instead of
621 #+BEGIN_SRC html
622 <script type="text/javascript" src="org-info.js" />
623 #+END_SRC
625   which is valid XHTML but not understood by all browsers. I'll use the first
626   version throughout this document where ever the space allows to do so.
628 ** Using Set()
629    :PROPERTIES:
630    :CUSTOM_ID: using-set
631    :END:
633    Before calling
634    : org_html_manager.setup ();
635    one may configure the script by using the =org\_html\_manager='s function
636    =set(key, val)=. There is one important rule for all of these options. If
637    you set a string value containing single quotes, do it this way:
638    : org_html_manager.set("key", "value with \\'single quotes\\'");
640    + =VIEW= :: Set to a true value to start in textinfo kind of view. Note: you
641      could also use =org\_html\_manager.INFO\_VIEW=,
642      =org\_html\_manager.PRESENTATION\_VIEW= or
643      =org\_html\_manager.PLAIN\_VIEW=. Defaults to plain view mode.
644    + =HIDE\_TOC= ::
645      If =1=, hide the table of contents.
646    + =SUB\_INDEXES= ::
647      If set to a =true= (=1= or not empty string) value, create subindexes
648      for sections containing subsections. See sections 1 2, or 3.1 of this
649      document. The index below the headline (under 'Contents:') is generated
650      by the script. This one is off by default.
651    + =VIEW\_BUTTONS= ::
652      If =true=, include the small '/toggle view/' link above every headline in
653      plain view too. The visitor can toggle the view every where in the file
654      then. If =false=, only at the top of the file such a link is displayed
655      when in plain view. Default is =false=.
656    + =MOUSE\_HINT= ::
657      Highlight the heading under the mouse. This can be a background color
658      (like '=#ff0000=', '=red=' or '=rgb(230,230,230)=') or the keyword
659      '=underline='.
660    + =LINK\_UP= ::
661      May be set, to link to an other file, preferably the main index page of a
662      subdirectory. You might consider using an absolute URL here. This link will be
663      displayed as
664      : <a href="LINK_UP">Up</a>
665      This way we can link files into a tree, if all subdirectories in the
666      project follow the same conventions. The '=h=' shortcut will
667      bring you there as well.
668    + =LINK\_HOME= ::
669      May be set, to link to an other file, preferably the main home page. This
670      link will be displayed as
671      : <a href="LINK_HOME">Up</a>
672      The '=H=' shortcut will trigger this action.
673    + =TOC\_DEPTH= ::
674      Cut the TOC at a certain level. This was done to support big big
675      files and was requested by Carsten Dominik. If '=0=' or not provided at
676      all the TOC will not be cut. If set to a number greater than '=0=',
677      the TOC will cut to only show headlines down to that very level.
678    + =HELP= ::
679      Display a little message on page load? Defaults to no message. Set to =1=
680      to display the startup message.
682 * How it works
684   First of all the script is included  in the header as described in [[#setup][Setup]].  The
685   document has  to be exported with TOC  since the script depends  on it (See
686   [[Why Do I Need a T.O.C?]]).
688   When   included,   it   creates    a   global   JavaScript™   variable   named
689   =org\_html\_manager=.
691   The  =org\_html\_manager::setup()=  function,  that  you  will  have  to  call
692   yourself  (see examples in  [[#setup][Setup]]), sets  up a  timeout function  calling it's
693   =init()= function after  50ms. After those 50 ms  The =init()= function starts
694   it's first attempt  to scan the document, using the TOC  as a guide. During
695   this scan the  =org\_html\_manager= builds a tree of  nodes, each caching some
696   data for later use. Once an element of the document is scanned it is marked by
697   setting a property =scanned\_for\_org= to =1=. This way it will not be scanned
698   a second time in  subsquent runs (it will be checked though,  but no work will
699   be done for it).
701   If the document  (or the TOC) is not  entirely loaded, =org\_html\_manager=
702   stops  scanning,  sets  the  timeout  again  to start  an  other  scan  50  ms
703   later. Once the  entire document is loaded and scanned no  new timeout will be
704   set, and the document is displayed in the desired way (hopefully).
706   Once the number of attempts to scan the  the document was configurable. This
707   was dropped, since we can not know in advance how fast the document will be
708   loaded on the client side.
710   The =org\_html\_manager= also changes the document a bit to make it react on
711   certain input events and follow your wishes. The old '/event handling/' was
712   entirely based on the normal link functions using so called =accesskeys=. This
713   has changed long ago, but the accesskeys will stay cause there is no reason to
714   remove them.
716 * Presentations with org-info.js
718   The script can handle all the sections as single slides. Press '=x=' to switch
719   to the presentation mode. In this mode you may navigate the sections using the
720   mouse. Currently a single click moves forward and a doubleclick backwards
721   (will change this to right mouse button for backwards movement).
723   The first plain list (i.e. an <ul> element) in a section is special. The items
724   will be shown one by one when moving forward.
726   If you're at the end of the presentation, a click does not trigger a
727   warning. Same applies to a doubleclick when in the first section.
729   There is no plan to extend this feature very much. A better plan might be to
730   write a separate tool to handle slides.
732 * History
734   The aim of this little script was to implement a part of emacs Org-mode
735   facilities of folding. Oh, no - not originaly.
737   My first idea was to view some of my larger org files without scrolling. I
738   wanted to have them paged just like texinfo or linuxdoc files. In February
739   2008 I came across Carsten Dominiks /ideas/ page
740   [[http://orgmode.org/todo.html]]. And I could not resist to write him some of my
741   thoughts about this great emacs mode including some little ideas and
742   drawbacks. I don't know how, but it somehow these guys made me, lazy bone that
743   I am, write this little script as an apetizer of /web 3.0 in Org-mode/ (Phil
744   Jackson).
746   I did and since some people really liked it, worked a bit more on it and added
747   features. Bastien Guerry was so kind to publish it on
748   http://www.legito.net/org-info-js/ the first months. Thanks Bastien.
750   In the first days of April Carsten Dominik added code to Org-mode to support
751   the usage of this script. Hence the script may now be configured in a similar way
752   to the other export options. Since then it is even possible to configure this
753   script through customize.
755 * Thanks
757   Very special thanks to Carsten Dominik, Bastien Guerry and Phil Jackson who
758   have encouraged me to write and publish this little piece of (unfinished) work
759   and all the hundrets of hours they spent on this fantastic emacs mode called
760   Org-mode and the export modules.
762   Org is a new working experience for me and there is nothing comparable to
763   working with emacs AND Org-mode.
765   An other big kiss to Gabi ([[http://www.emma-stil.de][www.emma-stil.de]]) for being so patient while I was
766   not working on our projects but playing with emacs.
768   Thanks to Tobias Prinz for listening to my stupid JavaScript questions and all
769   the usefull tips. Espacially the negative margin trick and key input.
771   And again big thanks to Carsten Dominik for making the inclusion and
772   configuration of the script so easy for the users, all the inspired ideas and
773   the great org radio table trick. A lot of the power of the final make up is
774   your merit! We all love to read the Org-mode mailing lists because of the
775   kind and relaxed tone that is yours.
777   Thanks a lot for OrgMode!
779 * License
781   What I think about licenses? Well - I think licences and patents are not far
782   from each other. Poor people (and poor countries!!!) stay poor because of both
783   of them. But since I know where I live, in a world made of licenses and
784   patents, I have to apply some license to my work to protect it and stay
785   unprotected.
787   Hence the script was originally licensed under [[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html][GPL 2]]. Since v.0.1.1.6 the
788   license was changed to [[http://www.gnu.org/licenses/gpl-3.0.html][GPL version 3]]. This document is subject to [[http://www.fsf.org/licensing/licenses/fdl.txt][GFDL]].
790 * THE END
792   The original version of this document was written in emacs23 with Org-mode
793   v. 5.22a+.  The visibilty of the contents of a individual section or
794   subsection can be toggled by clicking the stars in front of the headlines or
795   moving there and hitting =TAB=. The visibility of the entire document structure
796   can be changed by pressing =SHIFT+TAB= anywhere. When on a headline, pressing
797   =ALT+UP/DOWN= moves the entire subtree to different location in the tree,
798   keeping it's level of indentation. =ALT+LEFT/RIGHT= promotes and demotes the
799   subtree.
801   [[file:img/emacs23-org.js.org.png]]