ox-gpgweb: Implement virtual headlines and HTML_CLASS property.
authorWerner Koch <wk@gnupg.org>
Wed, 11 Apr 2018 08:25:56 +0000 (10:25 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 11 Apr 2018 08:25:56 +0000 (10:25 +0200)
This also chnanges how HTML_CONTAINER_CLASS is used.  That is not a
problem here becuase we are cot yet using that property.  With these
changes the following markup is possible (example):

  * Top header
    :PROPERTIES:
    :HTML_CLASS: centered
    :END:

  ** <div class="pure-g">                    :html:virtual:

  ** Foo
     :PROPERTIES:
     :HTML_CONTAINER_CLASS: pure-u-1 pure-u-lg-1-3
     :END:

    Foo is about bar.

  ** </div><!-- end pure-g -->               :html:virtual:

The HTML_CLASS property puts a class="centered" into the <h> tag.

The HTML_CONTAINER_CLASS property encloses its <h> section with
another div:

  <div class="pure-u-1 pure-u-lg-1-3">
  <h3>Foo</h3>
  <div class="outline-text-1" id="text-1-2">
  <p>Foo is about bar.</p>
  </div>
  </div>

The "html" tag (the "virtual" is right now only informational) inserts
the given HTML directly at this place into the output.  Note that this
can't be done with #+HTML: because that would distrub the sectioning.

web/share/ox-gpgweb.el

index a48985c..7d84d1a 100644 (file)
@@ -1222,6 +1222,9 @@ holding contextual information."
                             todo todo-type priority text tags info))
         (contents (or contents "")))
     (cond
+     ;; Case 0: virtual headline: Just print the raw value.
+     ((member "html" (org-export-get-tags headline info))
+      (format "%s\n" (org-element-property :raw-value headline)))
      ;; Case 1: This is a footnote section: ignore it.
      ((org-element-property :footnote-section-p headline) nil)
      ;; Case 2: This is a deep sub-tree: export it as a list item.
@@ -1247,11 +1250,16 @@ holding contextual information."
                              (org-element-property :ID headline))))
             (preferred-id (car ids))
             (extra-ids (cdr ids))
-            (extra-class (org-element-property :HTML_CONTAINER_CLASS headline))
+            (outer-class (org-element-property :HTML_CONTAINER_CLASS headline))
+            (header-class (org-element-property :HTML_CLASS headline))
             (first-content (car (org-element-contents headline))))
-       (format "<h%d id=\"%s\">%s%s</h%d>\n%s\n"
+       (format "%s<h%d%s id=\"%s\">%s%s</h%d>\n%s%s\n"
+                ; div class?
+                (if outer-class (concat "<div class=\"" outer-class "\">\n") "")
                ; h?
                level
+                ; header-class?
+                (if header-class (concat " class=\"" header-class "\"") "")
                ; id=?
                preferred-id
                ; insert anchors
@@ -1273,7 +1281,9 @@ holding contextual information."
                ; /h?
                level
                ; the content of the section
-               contents))))))
+               contents
+                (if outer-class "</div>" "")
+                ))))))
 
 (defun org-gpgweb-format-headline-function
   (todo todo-type priority text tags info)