Fossil SCM
Allow rendering of Pikchrs to SVG via /doc/…/foo.pikchr?popup URLs. This allows a file stored in the repo to be referenced as an SVG from other pages.
Commit
758170bc79fe365e580fd9825ebeb4cb817c2554c87712144643a60aa18225bd
Parent
34276d22e558fbd…
2 files changed
+2
-2
+8
-2
+2
-2
| --- src/doc.c | ||
| +++ src/doc.c | ||
| @@ -830,13 +830,13 @@ | ||
| 830 | 830 | document_emit_js(); |
| 831 | 831 | style_finish_page(); |
| 832 | 832 | } |
| 833 | 833 | }else if( fossil_strcmp(zMime, "text/x-pikchr")==0 ){ |
| 834 | 834 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 835 | - style_header("%s", zDefaultTitle); | |
| 835 | + if( !isPopup ) style_header("%s", zDefaultTitle); | |
| 836 | 836 | wiki_render_by_mimetype(pBody, zMime); |
| 837 | - style_finish_page(); | |
| 837 | + if( !isPopup ) style_finish_page(); | |
| 838 | 838 | #ifdef FOSSIL_ENABLE_TH1_DOCS |
| 839 | 839 | }else if( Th_AreDocsEnabled() && |
| 840 | 840 | fossil_strcmp(zMime, "application/x-th1")==0 ){ |
| 841 | 841 | int raw = P("raw")!=0; |
| 842 | 842 | if( !raw ){ |
| 843 | 843 |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -830,13 +830,13 @@ | |
| 830 | document_emit_js(); |
| 831 | style_finish_page(); |
| 832 | } |
| 833 | }else if( fossil_strcmp(zMime, "text/x-pikchr")==0 ){ |
| 834 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 835 | style_header("%s", zDefaultTitle); |
| 836 | wiki_render_by_mimetype(pBody, zMime); |
| 837 | style_finish_page(); |
| 838 | #ifdef FOSSIL_ENABLE_TH1_DOCS |
| 839 | }else if( Th_AreDocsEnabled() && |
| 840 | fossil_strcmp(zMime, "application/x-th1")==0 ){ |
| 841 | int raw = P("raw")!=0; |
| 842 | if( !raw ){ |
| 843 |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -830,13 +830,13 @@ | |
| 830 | document_emit_js(); |
| 831 | style_finish_page(); |
| 832 | } |
| 833 | }else if( fossil_strcmp(zMime, "text/x-pikchr")==0 ){ |
| 834 | style_adunit_config(ADUNIT_RIGHT_OK); |
| 835 | if( !isPopup ) style_header("%s", zDefaultTitle); |
| 836 | wiki_render_by_mimetype(pBody, zMime); |
| 837 | if( !isPopup ) style_finish_page(); |
| 838 | #ifdef FOSSIL_ENABLE_TH1_DOCS |
| 839 | }else if( Th_AreDocsEnabled() && |
| 840 | fossil_strcmp(zMime, "application/x-th1")==0 ){ |
| 841 | int raw = P("raw")!=0; |
| 842 | if( !raw ){ |
| 843 |
+8
-2
| --- src/wiki.c | ||
| +++ src/wiki.c | ||
| @@ -204,17 +204,23 @@ | ||
| 204 | 204 | markdown_to_html(pWiki, 0, &tail); |
| 205 | 205 | safe_html(&tail); |
| 206 | 206 | @ %s(blob_str(&tail)) |
| 207 | 207 | blob_reset(&tail); |
| 208 | 208 | }else if( fossil_strcmp(zMimetype, "text/x-pikchr")==0 ){ |
| 209 | + int isPopup = P("popup")!=0; | |
| 209 | 210 | const char *zPikchr = blob_str(pWiki); |
| 210 | 211 | int w, h; |
| 211 | 212 | char *zOut = pikchr(zPikchr, "pikchr", 0, &w, &h); |
| 212 | 213 | if( w>0 ){ |
| 213 | - @ <div class="pikchr-svg" style="max-width:%d(w)px"> | |
| 214 | + if( isPopup ) cgi_set_content_type("image/svg+xml"); | |
| 215 | + else{ | |
| 216 | + @ <div class="pikchr-svg" style="max-width:%d(w)px"> | |
| 217 | + } | |
| 214 | 218 | @ %s(zOut) |
| 215 | - @ </div> | |
| 219 | + if( !isPopup){ | |
| 220 | + @ </div> | |
| 221 | + } | |
| 216 | 222 | }else{ |
| 217 | 223 | @ <pre class='error'> |
| 218 | 224 | @ %h(zOut) |
| 219 | 225 | @ </pre> |
| 220 | 226 | } |
| 221 | 227 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -204,17 +204,23 @@ | |
| 204 | markdown_to_html(pWiki, 0, &tail); |
| 205 | safe_html(&tail); |
| 206 | @ %s(blob_str(&tail)) |
| 207 | blob_reset(&tail); |
| 208 | }else if( fossil_strcmp(zMimetype, "text/x-pikchr")==0 ){ |
| 209 | const char *zPikchr = blob_str(pWiki); |
| 210 | int w, h; |
| 211 | char *zOut = pikchr(zPikchr, "pikchr", 0, &w, &h); |
| 212 | if( w>0 ){ |
| 213 | @ <div class="pikchr-svg" style="max-width:%d(w)px"> |
| 214 | @ %s(zOut) |
| 215 | @ </div> |
| 216 | }else{ |
| 217 | @ <pre class='error'> |
| 218 | @ %h(zOut) |
| 219 | @ </pre> |
| 220 | } |
| 221 |
| --- src/wiki.c | |
| +++ src/wiki.c | |
| @@ -204,17 +204,23 @@ | |
| 204 | markdown_to_html(pWiki, 0, &tail); |
| 205 | safe_html(&tail); |
| 206 | @ %s(blob_str(&tail)) |
| 207 | blob_reset(&tail); |
| 208 | }else if( fossil_strcmp(zMimetype, "text/x-pikchr")==0 ){ |
| 209 | int isPopup = P("popup")!=0; |
| 210 | const char *zPikchr = blob_str(pWiki); |
| 211 | int w, h; |
| 212 | char *zOut = pikchr(zPikchr, "pikchr", 0, &w, &h); |
| 213 | if( w>0 ){ |
| 214 | if( isPopup ) cgi_set_content_type("image/svg+xml"); |
| 215 | else{ |
| 216 | @ <div class="pikchr-svg" style="max-width:%d(w)px"> |
| 217 | } |
| 218 | @ %s(zOut) |
| 219 | if( !isPopup){ |
| 220 | @ </div> |
| 221 | } |
| 222 | }else{ |
| 223 | @ <pre class='error'> |
| 224 | @ %h(zOut) |
| 225 | @ </pre> |
| 226 | } |
| 227 |