Fossil SCM
Added preview render mode selection list.
Commit
65b6c01afdaf28f6d0103ae598f1900913800f80f52f425400706d957421159d
Parent
ac309281e61e03a…
1 file changed
+30
-10
+30
-10
| --- src/fileedit.c | ||
| +++ src/fileedit.c | ||
| @@ -993,11 +993,12 @@ | ||
| 993 | 993 | |
| 994 | 994 | enum fileedit_render_preview_flags { |
| 995 | 995 | FE_PREVIEW_LINE_NUMBERS = 1 |
| 996 | 996 | }; |
| 997 | 997 | enum fileedit_render_modes { |
| 998 | -FE_RENDER_PLAIN_TEXT = 0, | |
| 998 | +FE_RENDER_GUESS = 0, | |
| 999 | +FE_RENDER_PLAIN_TEXT, | |
| 999 | 1000 | FE_RENDER_HTML, |
| 1000 | 1001 | FE_RENDER_WIKI |
| 1001 | 1002 | }; |
| 1002 | 1003 | |
| 1003 | 1004 | static int fileedit_render_mode_for_mimetype(const char * zMimetype){ |
| @@ -1016,16 +1017,17 @@ | ||
| 1016 | 1017 | /* |
| 1017 | 1018 | ** Performs the PREVIEW mode for /filepage. |
| 1018 | 1019 | */ |
| 1019 | 1020 | static void fileedit_render_preview(Blob * pContent, |
| 1020 | 1021 | const char *zFilename, |
| 1021 | - int flags, | |
| 1022 | + int flags, int renderMode, | |
| 1022 | 1023 | int nIframeHeightEm){ |
| 1023 | 1024 | const char * zMime; |
| 1024 | - int renderMode = FE_RENDER_PLAIN_TEXT; | |
| 1025 | 1025 | zMime = mimetype_from_name(zFilename); |
| 1026 | + if(FE_RENDER_GUESS==renderMode){ | |
| 1026 | 1027 | renderMode = fileedit_render_mode_for_mimetype(zMime); |
| 1028 | + } | |
| 1027 | 1029 | CX("<div class='fileedit-preview'>"); |
| 1028 | 1030 | CX("<div>Preview</div>"); |
| 1029 | 1031 | switch(renderMode){ |
| 1030 | 1032 | case FE_RENDER_HTML:{ |
| 1031 | 1033 | char * z64 = encode64(blob_str(pContent), blob_size(pContent)); |
| @@ -1038,11 +1040,10 @@ | ||
| 1038 | 1040 | break; |
| 1039 | 1041 | } |
| 1040 | 1042 | case FE_RENDER_WIKI: |
| 1041 | 1043 | wiki_render_by_mimetype(pContent, zMime); |
| 1042 | 1044 | break; |
| 1043 | - case FE_RENDER_PLAIN_TEXT: | |
| 1044 | 1045 | default:{ |
| 1045 | 1046 | const char *zExt = strrchr(zFilename,'.'); |
| 1046 | 1047 | const char *zContent = blob_str(pContent); |
| 1047 | 1048 | if(FE_PREVIEW_LINE_NUMBERS & flags){ |
| 1048 | 1049 | output_text_with_line_numbers(zContent, "on"); |
| @@ -1091,10 +1092,11 @@ | ||
| 1091 | 1092 | int submitMode = SUBMIT_NONE; /* See mapping below */ |
| 1092 | 1093 | int vid, newVid = 0; /* checkin rid */ |
| 1093 | 1094 | int frid = 0; /* File content rid */ |
| 1094 | 1095 | int previewLn = P("preview_ln")!=0; /* Line number mode */ |
| 1095 | 1096 | int previewHtmlHeight = 0; /* iframe height (EMs) */ |
| 1097 | + int previewRenderMode = FE_RENDER_GUESS; /* preview mode */ | |
| 1096 | 1098 | char * zFileUuid = 0; /* File content UUID */ |
| 1097 | 1099 | Blob err = empty_blob; /* Error report */ |
| 1098 | 1100 | const char * zFlagCheck = 0; /* Temp url flag holder */ |
| 1099 | 1101 | Blob endScript = empty_blob; /* Script code to run at the |
| 1100 | 1102 | end. This content will be |
| @@ -1342,15 +1344,33 @@ | ||
| 1342 | 1344 | CX("<button type='submit' name='submit' value='2'>" |
| 1343 | 1345 | "Preview</button>"); |
| 1344 | 1346 | CX("<button type='submit' name='submit' value='3'>" |
| 1345 | 1347 | "Diff (TODO)</button>"); |
| 1346 | 1348 | { |
| 1347 | - /* Options which depend on the current submitMode or | |
| 1348 | - the file's preview rendering mode. */ | |
| 1349 | - const int renderMode = fileedit_render_mode_for_mimetype(zFileMime); | |
| 1349 | + /* Preview rendering mode selection... */ | |
| 1350 | + previewRenderMode = atoi(PD("preview_render_mode","0")); | |
| 1351 | + if(0==previewRenderMode){ | |
| 1352 | + previewRenderMode = fileedit_render_mode_for_mimetype(zFileMime); | |
| 1353 | + } | |
| 1350 | 1354 | CX("<br>"); |
| 1351 | - if(FE_RENDER_HTML==renderMode){ | |
| 1355 | + CX("<select name='preview_render_mode'>\n"); | |
| 1356 | + CX("<option value='%d' disabled>Preview Mode</option>", | |
| 1357 | + FE_RENDER_GUESS); | |
| 1358 | + CX("<option value='%d'%s>Guess</option>", | |
| 1359 | + FE_RENDER_GUESS, | |
| 1360 | + FE_RENDER_GUESS==previewRenderMode ? " selected" : ""); | |
| 1361 | + CX("<option value='%d'%s>Wiki/Markdown</option>", | |
| 1362 | + FE_RENDER_WIKI, | |
| 1363 | + FE_RENDER_WIKI==previewRenderMode ? " selected" : ""); | |
| 1364 | + CX("<option value='%d'%s>HTML (iframe)</option>", | |
| 1365 | + FE_RENDER_HTML, | |
| 1366 | + FE_RENDER_HTML==previewRenderMode ? " selected" : ""); | |
| 1367 | + CX("<option value='%d'%s>Plain Text</option>", | |
| 1368 | + FE_RENDER_PLAIN_TEXT, | |
| 1369 | + FE_RENDER_PLAIN_TEXT==previewRenderMode ? " selected" : ""); | |
| 1370 | + CX("</select>\n"); | |
| 1371 | + if(FE_RENDER_HTML==previewRenderMode){ | |
| 1352 | 1372 | /* HTML preview mode iframe height... */ |
| 1353 | 1373 | int i; |
| 1354 | 1374 | if(submitMode==SUBMIT_PREVIEW){ |
| 1355 | 1375 | previewHtmlHeight = atoi(PD("preview_html_ems","0")); |
| 1356 | 1376 | }else{ |
| @@ -1366,11 +1386,11 @@ | ||
| 1366 | 1386 | CX("<option value='%d'%s>%d</option>\n", |
| 1367 | 1387 | i, (previewHtmlHeight==i) ? " selected" : "", i); |
| 1368 | 1388 | } |
| 1369 | 1389 | CX("</select>\n"); |
| 1370 | 1390 | } |
| 1371 | - else if(FE_RENDER_PLAIN_TEXT == renderMode){ | |
| 1391 | + else if(FE_RENDER_PLAIN_TEXT==previewRenderMode){ | |
| 1372 | 1392 | style_labeled_checkbox("preview_ln", |
| 1373 | 1393 | "Add line numbers to plain-text previews?", |
| 1374 | 1394 | "1", |
| 1375 | 1395 | "If on, plain-text files (only) will get " |
| 1376 | 1396 | "line numbers added to the preview.", |
| @@ -1475,11 +1495,11 @@ | ||
| 1475 | 1495 | blob_reset(&manifest); |
| 1476 | 1496 | }else if(SUBMIT_PREVIEW==submitMode){ |
| 1477 | 1497 | int pflags = 0; |
| 1478 | 1498 | if(previewLn) pflags |= FE_PREVIEW_LINE_NUMBERS; |
| 1479 | 1499 | fileedit_render_preview(&cimi.fileContent, cimi.zFilename, pflags, |
| 1480 | - previewHtmlHeight); | |
| 1500 | + previewRenderMode, previewHtmlHeight); | |
| 1481 | 1501 | }else if(SUBMIT_DIFF==submitMode/*diff*/){ |
| 1482 | 1502 | fail((&err,"Diff mode is still TODO.")); |
| 1483 | 1503 | }else{ |
| 1484 | 1504 | /* Ignore invalid submitMode value */ |
| 1485 | 1505 | goto end_footer; |
| 1486 | 1506 |
| --- src/fileedit.c | |
| +++ src/fileedit.c | |
| @@ -993,11 +993,12 @@ | |
| 993 | |
| 994 | enum fileedit_render_preview_flags { |
| 995 | FE_PREVIEW_LINE_NUMBERS = 1 |
| 996 | }; |
| 997 | enum fileedit_render_modes { |
| 998 | FE_RENDER_PLAIN_TEXT = 0, |
| 999 | FE_RENDER_HTML, |
| 1000 | FE_RENDER_WIKI |
| 1001 | }; |
| 1002 | |
| 1003 | static int fileedit_render_mode_for_mimetype(const char * zMimetype){ |
| @@ -1016,16 +1017,17 @@ | |
| 1016 | /* |
| 1017 | ** Performs the PREVIEW mode for /filepage. |
| 1018 | */ |
| 1019 | static void fileedit_render_preview(Blob * pContent, |
| 1020 | const char *zFilename, |
| 1021 | int flags, |
| 1022 | int nIframeHeightEm){ |
| 1023 | const char * zMime; |
| 1024 | int renderMode = FE_RENDER_PLAIN_TEXT; |
| 1025 | zMime = mimetype_from_name(zFilename); |
| 1026 | renderMode = fileedit_render_mode_for_mimetype(zMime); |
| 1027 | CX("<div class='fileedit-preview'>"); |
| 1028 | CX("<div>Preview</div>"); |
| 1029 | switch(renderMode){ |
| 1030 | case FE_RENDER_HTML:{ |
| 1031 | char * z64 = encode64(blob_str(pContent), blob_size(pContent)); |
| @@ -1038,11 +1040,10 @@ | |
| 1038 | break; |
| 1039 | } |
| 1040 | case FE_RENDER_WIKI: |
| 1041 | wiki_render_by_mimetype(pContent, zMime); |
| 1042 | break; |
| 1043 | case FE_RENDER_PLAIN_TEXT: |
| 1044 | default:{ |
| 1045 | const char *zExt = strrchr(zFilename,'.'); |
| 1046 | const char *zContent = blob_str(pContent); |
| 1047 | if(FE_PREVIEW_LINE_NUMBERS & flags){ |
| 1048 | output_text_with_line_numbers(zContent, "on"); |
| @@ -1091,10 +1092,11 @@ | |
| 1091 | int submitMode = SUBMIT_NONE; /* See mapping below */ |
| 1092 | int vid, newVid = 0; /* checkin rid */ |
| 1093 | int frid = 0; /* File content rid */ |
| 1094 | int previewLn = P("preview_ln")!=0; /* Line number mode */ |
| 1095 | int previewHtmlHeight = 0; /* iframe height (EMs) */ |
| 1096 | char * zFileUuid = 0; /* File content UUID */ |
| 1097 | Blob err = empty_blob; /* Error report */ |
| 1098 | const char * zFlagCheck = 0; /* Temp url flag holder */ |
| 1099 | Blob endScript = empty_blob; /* Script code to run at the |
| 1100 | end. This content will be |
| @@ -1342,15 +1344,33 @@ | |
| 1342 | CX("<button type='submit' name='submit' value='2'>" |
| 1343 | "Preview</button>"); |
| 1344 | CX("<button type='submit' name='submit' value='3'>" |
| 1345 | "Diff (TODO)</button>"); |
| 1346 | { |
| 1347 | /* Options which depend on the current submitMode or |
| 1348 | the file's preview rendering mode. */ |
| 1349 | const int renderMode = fileedit_render_mode_for_mimetype(zFileMime); |
| 1350 | CX("<br>"); |
| 1351 | if(FE_RENDER_HTML==renderMode){ |
| 1352 | /* HTML preview mode iframe height... */ |
| 1353 | int i; |
| 1354 | if(submitMode==SUBMIT_PREVIEW){ |
| 1355 | previewHtmlHeight = atoi(PD("preview_html_ems","0")); |
| 1356 | }else{ |
| @@ -1366,11 +1386,11 @@ | |
| 1366 | CX("<option value='%d'%s>%d</option>\n", |
| 1367 | i, (previewHtmlHeight==i) ? " selected" : "", i); |
| 1368 | } |
| 1369 | CX("</select>\n"); |
| 1370 | } |
| 1371 | else if(FE_RENDER_PLAIN_TEXT == renderMode){ |
| 1372 | style_labeled_checkbox("preview_ln", |
| 1373 | "Add line numbers to plain-text previews?", |
| 1374 | "1", |
| 1375 | "If on, plain-text files (only) will get " |
| 1376 | "line numbers added to the preview.", |
| @@ -1475,11 +1495,11 @@ | |
| 1475 | blob_reset(&manifest); |
| 1476 | }else if(SUBMIT_PREVIEW==submitMode){ |
| 1477 | int pflags = 0; |
| 1478 | if(previewLn) pflags |= FE_PREVIEW_LINE_NUMBERS; |
| 1479 | fileedit_render_preview(&cimi.fileContent, cimi.zFilename, pflags, |
| 1480 | previewHtmlHeight); |
| 1481 | }else if(SUBMIT_DIFF==submitMode/*diff*/){ |
| 1482 | fail((&err,"Diff mode is still TODO.")); |
| 1483 | }else{ |
| 1484 | /* Ignore invalid submitMode value */ |
| 1485 | goto end_footer; |
| 1486 |
| --- src/fileedit.c | |
| +++ src/fileedit.c | |
| @@ -993,11 +993,12 @@ | |
| 993 | |
| 994 | enum fileedit_render_preview_flags { |
| 995 | FE_PREVIEW_LINE_NUMBERS = 1 |
| 996 | }; |
| 997 | enum fileedit_render_modes { |
| 998 | FE_RENDER_GUESS = 0, |
| 999 | FE_RENDER_PLAIN_TEXT, |
| 1000 | FE_RENDER_HTML, |
| 1001 | FE_RENDER_WIKI |
| 1002 | }; |
| 1003 | |
| 1004 | static int fileedit_render_mode_for_mimetype(const char * zMimetype){ |
| @@ -1016,16 +1017,17 @@ | |
| 1017 | /* |
| 1018 | ** Performs the PREVIEW mode for /filepage. |
| 1019 | */ |
| 1020 | static void fileedit_render_preview(Blob * pContent, |
| 1021 | const char *zFilename, |
| 1022 | int flags, int renderMode, |
| 1023 | int nIframeHeightEm){ |
| 1024 | const char * zMime; |
| 1025 | zMime = mimetype_from_name(zFilename); |
| 1026 | if(FE_RENDER_GUESS==renderMode){ |
| 1027 | renderMode = fileedit_render_mode_for_mimetype(zMime); |
| 1028 | } |
| 1029 | CX("<div class='fileedit-preview'>"); |
| 1030 | CX("<div>Preview</div>"); |
| 1031 | switch(renderMode){ |
| 1032 | case FE_RENDER_HTML:{ |
| 1033 | char * z64 = encode64(blob_str(pContent), blob_size(pContent)); |
| @@ -1038,11 +1040,10 @@ | |
| 1040 | break; |
| 1041 | } |
| 1042 | case FE_RENDER_WIKI: |
| 1043 | wiki_render_by_mimetype(pContent, zMime); |
| 1044 | break; |
| 1045 | default:{ |
| 1046 | const char *zExt = strrchr(zFilename,'.'); |
| 1047 | const char *zContent = blob_str(pContent); |
| 1048 | if(FE_PREVIEW_LINE_NUMBERS & flags){ |
| 1049 | output_text_with_line_numbers(zContent, "on"); |
| @@ -1091,10 +1092,11 @@ | |
| 1092 | int submitMode = SUBMIT_NONE; /* See mapping below */ |
| 1093 | int vid, newVid = 0; /* checkin rid */ |
| 1094 | int frid = 0; /* File content rid */ |
| 1095 | int previewLn = P("preview_ln")!=0; /* Line number mode */ |
| 1096 | int previewHtmlHeight = 0; /* iframe height (EMs) */ |
| 1097 | int previewRenderMode = FE_RENDER_GUESS; /* preview mode */ |
| 1098 | char * zFileUuid = 0; /* File content UUID */ |
| 1099 | Blob err = empty_blob; /* Error report */ |
| 1100 | const char * zFlagCheck = 0; /* Temp url flag holder */ |
| 1101 | Blob endScript = empty_blob; /* Script code to run at the |
| 1102 | end. This content will be |
| @@ -1342,15 +1344,33 @@ | |
| 1344 | CX("<button type='submit' name='submit' value='2'>" |
| 1345 | "Preview</button>"); |
| 1346 | CX("<button type='submit' name='submit' value='3'>" |
| 1347 | "Diff (TODO)</button>"); |
| 1348 | { |
| 1349 | /* Preview rendering mode selection... */ |
| 1350 | previewRenderMode = atoi(PD("preview_render_mode","0")); |
| 1351 | if(0==previewRenderMode){ |
| 1352 | previewRenderMode = fileedit_render_mode_for_mimetype(zFileMime); |
| 1353 | } |
| 1354 | CX("<br>"); |
| 1355 | CX("<select name='preview_render_mode'>\n"); |
| 1356 | CX("<option value='%d' disabled>Preview Mode</option>", |
| 1357 | FE_RENDER_GUESS); |
| 1358 | CX("<option value='%d'%s>Guess</option>", |
| 1359 | FE_RENDER_GUESS, |
| 1360 | FE_RENDER_GUESS==previewRenderMode ? " selected" : ""); |
| 1361 | CX("<option value='%d'%s>Wiki/Markdown</option>", |
| 1362 | FE_RENDER_WIKI, |
| 1363 | FE_RENDER_WIKI==previewRenderMode ? " selected" : ""); |
| 1364 | CX("<option value='%d'%s>HTML (iframe)</option>", |
| 1365 | FE_RENDER_HTML, |
| 1366 | FE_RENDER_HTML==previewRenderMode ? " selected" : ""); |
| 1367 | CX("<option value='%d'%s>Plain Text</option>", |
| 1368 | FE_RENDER_PLAIN_TEXT, |
| 1369 | FE_RENDER_PLAIN_TEXT==previewRenderMode ? " selected" : ""); |
| 1370 | CX("</select>\n"); |
| 1371 | if(FE_RENDER_HTML==previewRenderMode){ |
| 1372 | /* HTML preview mode iframe height... */ |
| 1373 | int i; |
| 1374 | if(submitMode==SUBMIT_PREVIEW){ |
| 1375 | previewHtmlHeight = atoi(PD("preview_html_ems","0")); |
| 1376 | }else{ |
| @@ -1366,11 +1386,11 @@ | |
| 1386 | CX("<option value='%d'%s>%d</option>\n", |
| 1387 | i, (previewHtmlHeight==i) ? " selected" : "", i); |
| 1388 | } |
| 1389 | CX("</select>\n"); |
| 1390 | } |
| 1391 | else if(FE_RENDER_PLAIN_TEXT==previewRenderMode){ |
| 1392 | style_labeled_checkbox("preview_ln", |
| 1393 | "Add line numbers to plain-text previews?", |
| 1394 | "1", |
| 1395 | "If on, plain-text files (only) will get " |
| 1396 | "line numbers added to the preview.", |
| @@ -1475,11 +1495,11 @@ | |
| 1495 | blob_reset(&manifest); |
| 1496 | }else if(SUBMIT_PREVIEW==submitMode){ |
| 1497 | int pflags = 0; |
| 1498 | if(previewLn) pflags |= FE_PREVIEW_LINE_NUMBERS; |
| 1499 | fileedit_render_preview(&cimi.fileContent, cimi.zFilename, pflags, |
| 1500 | previewRenderMode, previewHtmlHeight); |
| 1501 | }else if(SUBMIT_DIFF==submitMode/*diff*/){ |
| 1502 | fail((&err,"Diff mode is still TODO.")); |
| 1503 | }else{ |
| 1504 | /* Ignore invalid submitMode value */ |
| 1505 | goto end_footer; |
| 1506 |