From: Sebastian Rose <sebastian_rose@gmx.de>
To: Benny Simonsen <benny@slbs.dk>
Cc: emacs-orgmode@gnu.org
Subject: Re: Re: Highlight current page in TOC
Date: Wed, 24 Nov 2010 20:00:03 +0100 [thread overview]
Message-ID: <87ipzmpmx8.fsf@gmx.de> (raw)
In-Reply-To: <87vd3mpruj.fsf@gmx.de> (Sebastian Rose's message of "Wed, 24 Nov 2010 18:13:40 +0100")
Sebastian Rose <sebastian_rose@gmx.de> writes:
> Benny Simonsen <benny@slbs.dk> writes:
>
>> 2010/11/14 Benny Simonsen <benny@slbs.dk>
>>>
>>> Hi
>>>
>>> With the org-info-js mode enabled each section is shown as a seperate
>>> page, but then I would like to get current page marked in the TOC in
>>> some way (e.g. class=current and then some CSS to make the markup)
>>> ... but is it possible?
>>>
>>> /Benny
>>
>> Hi
>>
>> I have made it.
>>
>> The result can be seen on a example page I have made (in danish -
>> (translated org-info-src.js [1] it into danish)) -
>> http://slbs.dk/org/oensker.html
>>
>> I have modified org-info-src.js [1] to include an extra function
>> setLinkClass + using this function at the end of showSection.
>> I have also added a small css script [2] with the extra content, which
>> could be included in the normal worg.css [3] without side effects, I
>> think.
>> I include one css - main.css [4] that includes the two css files
>> mentioed here + an extra file with my own site style.'
>>
>> Except the changes in my site slbs.css, the only style changes I have made are:
>> - Current page/section are marked black and bold
>> - Visited pages are marked in different color
>>
>> Anyone interested in a patch for the highlighting of the links?
>> Anyone interested in a patch for the danish org-info-src.js?
>>
>> [1] http://slbs.dk/org/scripts/org-info-src.marklinks.js
>> ... in danish: http://slbs.dk/org/scripts/org-info-src.da.marklinks.js
>> ... in danish without modifications:
>> http://slbs.dk/org/scripts/org-info-src.da.js
>> [2] http://slbs.dk/org/style/marklink.css
>> [3] Copy from http://orgmode.org/worg/worg.css
>> [4] http://slbs.dk/org/style/main.css - Which includes the other css files
>>
>> I have also included lightbox-2.04, and changed it so that a group is
>> limited to one visible page(one section)
>>
>>
>> Best regards
>> Benny Simonsen
>
>
> Hi Benny!
>
>
> That's very beautiful with fixed T.O.C!
>
>
> I have added a modified version of your patch (just the "className" part
> of it).
>
> The sections now reference their anchor HTML-Element in the TOC passed
> as an additional parameter in the constructor OrgNode (in the function
> `mkNodeFromHref()'). This might lead to problems in old Internet
> Explorers when leaving the page - but in old ones.
>
>
>
> I guess the cleanest way to add actions to org-info.js is to add hooks
> and use them this way (e.g. in the HTML <head> section):
>
>
> #+STYLE: <script type="text/javascript">
> #+STYLE: org_html_manager.onReady(
> #+STYLE: function(){alert("Page is loaded, setup finished.");});
> #+STYLE: org_html_manager.onShowSection(
> #+STYLE: function(sec){alert(sec.H);});
> #+STYLE: </script>
>
>
> That's what I'm working at currently:
>
> Just gimme an hour. You can then hook in your LightBox function.
>
> Note: currently the names in sources and compressed scripts are
> different (see `sed.txt'). We should change that in the future for
> some widely used variables (like OrgNode.H <=> OrgNode.HEADING).
OK. That's how it works now:
There are two hooks (maybe more to come) for now.
1. The 'onReady' hook.
You may add functions to that hook using
#+STYLE: <script type="text/javascript">
#+STYLE: org_html_manager.onReady(function(){alert("Ready");});
#+STYLE: </script>
The hook is called with exactly one parameter: the OrgHtmlManager
object (which is the first parameter for every hook function).
2. The 'onShowSection' hook.
You may add functions to that hook using
#+STYLE: <script type="text/javascript">
#+STYLE: org_html_manager.onShowSection(function(ohm, obj){
#+STYLE: alert("Showing "+ohm.rT(obj.current.H.innerHTML));
#+STYLE: });
#+STYLE: </script>
The hook is called with two parameters: the OrgHtmlManager
object (which is the first parameter for every hook function) and an
object
{last: OrgNodeObject, current: OrgNodeObject}
You may add several functions to a hook by calling the `onReady' method
several times. Fist added, first executed.
So you would just add your LightBox stuff like this (untested):
org_html_manager.onShowSection(function(ohm, secs)
{
var imgs = secs.current.D.getElementsByTagName("img");
for(var i=0;i<imgs.length;++i) {
if(imgs[i].parentNode.tagName == "A" && imgs[i].parentNode.rel == "lightboxGrp") {
parent = imgs[i].parentNode.parentNode;
div_id = "";
do {
if(parent.tagName == "BODY") {
div_id = "NaN_body";
}
else if(parent.tagName == "DIV" && parent.className == "outline-text-2") {
div_id = parent.id;
}
else {
nxtParent = parent.parentNode;
parent = nxtParent;
}
} while (div_id == "");
imgs[i].parentNode.rel = "lightbox["+div_id+"]";
}
}
Best wishes
Sebastian
next prev parent reply other threads:[~2010-11-24 19:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-14 16:51 Highlight current page in TOC Benny Simonsen
2010-11-22 20:06 ` Benny Simonsen
2010-11-24 17:13 ` Sebastian Rose
2010-11-24 19:00 ` Sebastian Rose [this message]
2010-11-30 20:27 ` Sebastian Rose
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ipzmpmx8.fsf@gmx.de \
--to=sebastian_rose@gmx.de \
--cc=benny@slbs.dk \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.