emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Re: Re: Fully featured Web publishing
  2009-03-18 21:20   ` Sébastien Vauban
@ 2009-03-18 22:38     ` Sebastian Rose
  2009-03-18 22:56       ` Rasmus Pank Roulund
  0 siblings, 1 reply; 9+ messages in thread
From: Sebastian Rose @ 2009-03-18 22:38 UTC (permalink / raw)
  To: Sébastien Vauban; +Cc: emacs-orgmode

Sébastien Vauban <zthjwsqqafhv@spammotel.com> writes:
> Thanks for the other (useful) info. But, here, your answer is not adequate as
> I don't want to have almost identical information duplicated in each page of
> my site. Just imagine the pain it is if I want to change the structure (adding
> a new page in my menu -- I have to update all my pages!).


I understand. Use `#+SETUPFILE' for that reason.


Automatical computing of navigations is not possible (yet).


> The trick I used with Muse was to make that automatically computed:
>
>     o   having a menu defined only once;
>
>     o   per page, adding the `current' keyword on the adequate item --
>         automatically done by the above function.
>
> Adding a page in my Web site means just updating one variable: the menu
> definition. Nothing more to do...
>
> Is there, then, a similar solution?  Or, at least, one achieving the same
> results by other means?
>
> Best regards,
>   Seb

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-18 22:56       ` Rasmus Pank Roulund
@ 2009-03-18 23:19         ` Richard Riley
  2009-03-19  7:46           ` Rasmus Pank Roulund
  2009-03-19 10:37           ` Sebastian Rose
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Riley @ 2009-03-18 23:19 UTC (permalink / raw)
  To: Rasmus Pank Roulund; +Cc: emacs-orgmode


Rasmus Pank Roulund <rasmus.pank@gmail.com> writes:

> I have done something similar. I have a single menu file which I
> include on every page. 
> #+INCLUDE:    menu.org
>
> Would that solve you problem?
>
> -Rasmus

Why not us preamble?

I'm not sure if its an approved way or not but has done for me for a site
wide addition for a while now but I must admit to not being up to date
with all latest and greatest innovations.

http://richardriley.net/projects/emacs/dotorg.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-19  7:46           ` Rasmus Pank Roulund
@ 2009-03-19  8:28             ` Richard Riley
  0 siblings, 0 replies; 9+ messages in thread
From: Richard Riley @ 2009-03-19  8:28 UTC (permalink / raw)
  To: Rasmus Pank Roulund; +Cc: emacs-orgmode

Rasmus Pank Roulund <rasmus.pank@gmail.com> writes:

>> Why not us preamble?
>
> I am not sure I understand you question, but:
> Because the OP wants to include the same menu on every page. If you
> input the file you will only have to update one file and the other files
> will be updated. 

with preamble you do it across the web with one change in your project
definition and since it is across the web it seems appropriate to be
part of the org project definition.


I included a link to an example.

>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>

-- 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-18 23:19         ` Richard Riley
  2009-03-19  7:46           ` Rasmus Pank Roulund
@ 2009-03-19 10:37           ` Sebastian Rose
  2009-03-19 13:38             ` Richard Riley
  1 sibling, 1 reply; 9+ messages in thread
From: Sebastian Rose @ 2009-03-19 10:37 UTC (permalink / raw)
  To: Richard Riley; +Cc: emacs-orgmode, Rasmus Pank Roulund

Richard Riley <rileyrgdev@googlemail.com> writes:
> Why not us preamble?
>
> I'm not sure if its an approved way or not but has done for me for a site
> wide addition for a while now but I must admit to not being up to date
> with all latest and greatest innovations.
>
> http://richardriley.net/projects/emacs/dotorg.html

Nice trick. We have to put this into the publishing tutorial!



BTW: here is bug in the docs:

C-h v org-preamble TAB RET

   org-export-html-preamble is a variable defined in `org-exp.el'.
   Its value is nil

   Documentation:
   Preamble, to be inserted just before <body>.  Set by publishing functions.


Should be:

   org-export-html-preamble is a variable defined in `org-exp.el'.
   Its value is nil

   Documentation:
   Preamble, to be inserted just after <body>.  Set by publishing functions.





Regards,

   Sebastian

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-19 10:37           ` Sebastian Rose
@ 2009-03-19 13:38             ` Richard Riley
  2009-03-19 15:03               ` Sebastian Rose
  2009-03-19 16:12               ` Matthew Lundin
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Riley @ 2009-03-19 13:38 UTC (permalink / raw)
  To: Sebastian Rose; +Cc: emacs-orgmode, Richard Riley, Rasmus Pank Roulund

Sebastian Rose <sebastian_rose@gmx.de> writes:

> Richard Riley <rileyrgdev@googlemail.com> writes:
>> Why not us preamble?
>>
>> I'm not sure if its an approved way or not but has done for me for a site
>> wide addition for a while now but I must admit to not being up to date
>> with all latest and greatest innovations.
>>
>> http://richardriley.net/projects/emacs/dotorg.html
>
> Nice trick. We have to put this into the publishing tutorial!

Is it a trick though? It seemed the best way to do it at the time. What
is the better way? At the time I asked about a header and footer which
is fairly common and decided to use preamble and postamble to
effectively act as common header and footer components. Prior to the
"id=content" modifications (container) I also used to introduce the
"content"container using preamble and postamble too (e.preamble opening
the div and postamble closing it).

regards,

r.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-19 13:38             ` Richard Riley
@ 2009-03-19 15:03               ` Sebastian Rose
  2009-03-19 16:12               ` Matthew Lundin
  1 sibling, 0 replies; 9+ messages in thread
From: Sebastian Rose @ 2009-03-19 15:03 UTC (permalink / raw)
  To: Richard Riley; +Cc: emacs-orgmode, Rasmus Pank Roulund

Richard Riley <rileyrgdev@googlemail.com> writes:
> Is it a trick though?

Sorry, I mixed German and English here. I German a 'Trick' is primarily
a _positive_ thing.

If you want to turn it into something (slightly) negative, you say
'fauler Trick' here :)

(literally: 'lazy trick')



-- 
Sebastian Rose, EMMA STIL - mediendesign, Niemeyerstr.6, 30449 Hannover
Tel.:  +49 (0)511 - 36 58 472
Fax:   +49 (0)1805 - 233633 - 11044
mobil: +49 (0)173 - 83 93 417
Http:  www.emma-stil.de

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-03-19 13:38             ` Richard Riley
  2009-03-19 15:03               ` Sebastian Rose
@ 2009-03-19 16:12               ` Matthew Lundin
  1 sibling, 0 replies; 9+ messages in thread
From: Matthew Lundin @ 2009-03-19 16:12 UTC (permalink / raw)
  To: Richard Riley; +Cc: emacs-orgmode, Rasmus Pank Roulund

Richard Riley <rileyrgdev@googlemail.com> writes:

>>> Why not us preamble?
>>>
>>> I'm not sure if its an approved way or not but has done for me for a site
>>> wide addition for a while now but I must admit to not being up to date
>>> with all latest and greatest innovations.
>>>
>>> http://richardriley.net/projects/emacs/dotorg.html

> It seemed the best way to do it at the time. What is the better way?
> At the time I asked about a header and footer which is fairly common
> and decided to use preamble and postamble to effectively act as common
> header and footer components. Prior to the "id=content" modifications
> (container) I also used to introduce the "content"container using
> preamble and postamble too (e.preamble opening the div and postamble
> closing it).

To chime in here, this is precisely how I create the menu on my website:

http://faculty.valpo.edu/mlundin/

In my org-publish-project-alist I have the following:

,----
| [snip]
| :preamble "
| <div id=\"menu\">
| <div id=\"sidemenu\">
| <a href=\"index.html\">Home</a> &#124;
| <a href=\"sitemap.html\">Site Map</a>
| </div>
| <div id=\"sidetitle\">
| Matthew Lundin
| </div>
| </div>
| <div id=\"wrapper\">"
| :postamble "</div>"
| [snip]
`----

The preamble is placed directly beneath the <body> tag.

I use to add a couple of extra wrapper divs, but with the new default
content div, I only add one. 

Obviously, one could get a lot more elaborate with this.

Best,
Matt

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
@ 2009-04-18  9:23 Tomas Hlavaty
  2009-04-18 11:04 ` Carsten Dominik
  0 siblings, 1 reply; 9+ messages in thread
From: Tomas Hlavaty @ 2009-04-18  9:23 UTC (permalink / raw)
  To: emacs-orgmode

Hi all,

thanks for the excelent org-mode;-)

> Automatical computing of navigations is not possible (yet).

There is a way of achieving this:

1. define and use function my-org-publish-org-to-html which determines
   what directory level we are on and then calls the original
   org-publish-org-to-html function

2. define and use my-org-preamble which inserts the preamble based on
   the directory level computed above

3. patch org-export-as-html so that the config parameters :style and
   :preamble can be functions as well as strings.

Here is rough code.

Configuration:

         :publishing-function my-org-publish-org-to-html
         :style my-org-style
         :preamble my-org-preamble

The "user" code:

(defun my-org-publish-org-to-html (plist filename pubdir)
  (let* ((dir (file-name-as-directory
               (file-truename (plist-get plist :base-directory))))
         (fname (file-truename filename))
         (rel (substring fname (length dir)))
         (*org-publish-level*
            (loop for x in (split-string rel "")
               count (and (stringp x) (string= "/" x)))))
    (org-publish-org-to-html plist filename pubdir)))

(defun my-org-preamble ()
  (let ((pre (apply 'concat
                (loop for i from 1 upto *org-publish-level* collect "../"))))
    (insert "
<div id=\"menu\">
<a href=\"" pre "index.html\">Home</a>
| <a href=\"" pre "sw/index.html\">Software</a>
| <a href=\"" pre "blog/index.html\">Blog</a>
| <a href=\"" pre "contact.html\">Contact</a>
| <a href=\"" pre "sitemap.html\">Site Map</a>
</div>
<div>
")))

(defun my-org-style ()
  (let ((pre (apply 'concat
                (loop for i from 1 upto *org-publish-level* collect "../"))))
    (concat "
<link rel=\"stylesheet\" href=\"" pre "style.css\" type=\"text/css\"/>
<link rel=\"icon\" href=\"" pre "favicon.ico\" type=\"image/x-icon\"/>
<link rel=\"shortcut icon\" href=\"" pre "favicon.ico\" type=\"image/x-icon\"/>")))

The "patched" code in org-export-as-html:

@@ -465,7 +465,12 @@ PUB-DIR is set, use this as the publishing directory."
 			       (org-infile-export-plist))))
 	 (style (concat (if (plist-get opt-plist :style-include-default)
 			    org-export-html-style-default)
-			(plist-get opt-plist :style)
+            ;;; THL Changed !!!
+			(let ((s (plist-get opt-plist :style)))
+              (cond
+               ((and s (stringp s)) s)
+               (s (funcall s))))
+            ;;;(plist-get opt-plist :style)
 			(plist-get opt-plist :style-extra)
 			"\n"
 			(if (plist-get opt-plist :style-include-scripts)
@@ -664,7 +669,12 @@ lang=\"%s\" xml:lang=\"%s\">
 		 date author description keywords
 		 style))
 
-	(insert (or (plist-get opt-plist :preamble) ""))
+    ;; THL Changed !!!
+    (let ((preamble (plist-get opt-plist :preamble)))
+      (cond
+       ((and preamble (stringp preamble)) (insert preamble))
+       (preamble (funcall preamble))))
+	;;(insert (or (plist-get opt-plist :preamble) ""))
 
 	(when (plist-get opt-plist :auto-preamble)
 	  (if title (insert (format org-export-html-title-format

I think that in general, the org-mode configuration
(org-publish-project-alist) would be more flexible/user programable if
the config parameters could also be functions (i.e. not limited to
strings only).  Any ideas whether and how to improve and make the
above functionality available in the official release?

Thank you,

Tomas

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: Fully featured Web publishing
  2009-04-18  9:23 Re: Fully featured Web publishing Tomas Hlavaty
@ 2009-04-18 11:04 ` Carsten Dominik
  0 siblings, 0 replies; 9+ messages in thread
From: Carsten Dominik @ 2009-04-18 11:04 UTC (permalink / raw)
  To: Tomas Hlavaty; +Cc: emacs-orgmode

Hi Tomas,

if you have or will sign a copyright assignment, I'd be happy to accept
a patch to this effect.

- Carsten

On Apr 18, 2009, at 11:23 AM, Tomas Hlavaty wrote:

> Hi all,
>
> thanks for the excelent org-mode;-)
>
>> Automatical computing of navigations is not possible (yet).
>
> There is a way of achieving this:
>
> 1. define and use function my-org-publish-org-to-html which determines
>   what directory level we are on and then calls the original
>   org-publish-org-to-html function
>
> 2. define and use my-org-preamble which inserts the preamble based on
>   the directory level computed above
>
> 3. patch org-export-as-html so that the config parameters :style and
>   :preamble can be functions as well as strings.
>
> Here is rough code.
>
> Configuration:
>
>         :publishing-function my-org-publish-org-to-html
>         :style my-org-style
>         :preamble my-org-preamble
>
> The "user" code:
>
> (defun my-org-publish-org-to-html (plist filename pubdir)
>  (let* ((dir (file-name-as-directory
>               (file-truename (plist-get plist :base-directory))))
>         (fname (file-truename filename))
>         (rel (substring fname (length dir)))
>         (*org-publish-level*
>            (loop for x in (split-string rel "")
>               count (and (stringp x) (string= "/" x)))))
>    (org-publish-org-to-html plist filename pubdir)))
>
> (defun my-org-preamble ()
>  (let ((pre (apply 'concat
>                (loop for i from 1 upto *org-publish-level* collect  
> "../"))))
>    (insert "
> <div id=\"menu\">
> <a href=\"" pre "index.html\">Home</a>
> | <a href=\"" pre "sw/index.html\">Software</a>
> | <a href=\"" pre "blog/index.html\">Blog</a>
> | <a href=\"" pre "contact.html\">Contact</a>
> | <a href=\"" pre "sitemap.html\">Site Map</a>
> </div>
> <div>
> ")))
>
> (defun my-org-style ()
>  (let ((pre (apply 'concat
>                (loop for i from 1 upto *org-publish-level* collect  
> "../"))))
>    (concat "
> <link rel=\"stylesheet\" href=\"" pre "style.css\" type=\"text/css\"/>
> <link rel=\"icon\" href=\"" pre "favicon.ico\" type=\"image/x-icon\"/>
> <link rel=\"shortcut icon\" href=\"" pre "favicon.ico\" type=\"image/ 
> x-icon\"/>")))
>
> The "patched" code in org-export-as-html:
>
> @@ -465,7 +465,12 @@ PUB-DIR is set, use this as the publishing  
> directory."
> 			       (org-infile-export-plist))))
> 	 (style (concat (if (plist-get opt-plist :style-include-default)
> 			    org-export-html-style-default)
> -			(plist-get opt-plist :style)
> +            ;;; THL Changed !!!
> +			(let ((s (plist-get opt-plist :style)))
> +              (cond
> +               ((and s (stringp s)) s)
> +               (s (funcall s))))
> +            ;;;(plist-get opt-plist :style)
> 			(plist-get opt-plist :style-extra)
> 			"\n"
> 			(if (plist-get opt-plist :style-include-scripts)
> @@ -664,7 +669,12 @@ lang=\"%s\" xml:lang=\"%s\">
> 		 date author description keywords
> 		 style))
>
> -	(insert (or (plist-get opt-plist :preamble) ""))
> +    ;; THL Changed !!!
> +    (let ((preamble (plist-get opt-plist :preamble)))
> +      (cond
> +       ((and preamble (stringp preamble)) (insert preamble))
> +       (preamble (funcall preamble))))
> +	;;(insert (or (plist-get opt-plist :preamble) ""))
>
> 	(when (plist-get opt-plist :auto-preamble)
> 	  (if title (insert (format org-export-html-title-format
>
> I think that in general, the org-mode configuration
> (org-publish-project-alist) would be more flexible/user programable if
> the config parameters could also be functions (i.e. not limited to
> strings only).  Any ideas whether and how to improve and make the
> above functionality available in the official release?
>
> Thank you,
>
> Tomas
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-04-18 11:04 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-18  9:23 Re: Fully featured Web publishing Tomas Hlavaty
2009-04-18 11:04 ` Carsten Dominik
  -- strict thread matches above, loose matches on Subject: below --
2009-03-18 16:04 Sébastien Vauban
2009-03-18 16:57 ` Sebastian Rose
2009-03-18 21:20   ` Sébastien Vauban
2009-03-18 22:38     ` Sebastian Rose
2009-03-18 22:56       ` Rasmus Pank Roulund
2009-03-18 23:19         ` Richard Riley
2009-03-19  7:46           ` Rasmus Pank Roulund
2009-03-19  8:28             ` Richard Riley
2009-03-19 10:37           ` Sebastian Rose
2009-03-19 13:38             ` Richard Riley
2009-03-19 15:03               ` Sebastian Rose
2009-03-19 16:12               ` Matthew Lundin

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).