Fossil SCM

Added preview render mode selection list.

stephan 2020-05-04 13:12 checkin-without-checkout
Commit 65b6c01afdaf28f6d0103ae598f1900913800f80f52f425400706d957421159d
1 file changed +30 -10
+30 -10
--- src/fileedit.c
+++ src/fileedit.c
@@ -993,11 +993,12 @@
993993
994994
enum fileedit_render_preview_flags {
995995
FE_PREVIEW_LINE_NUMBERS = 1
996996
};
997997
enum fileedit_render_modes {
998
-FE_RENDER_PLAIN_TEXT = 0,
998
+FE_RENDER_GUESS = 0,
999
+FE_RENDER_PLAIN_TEXT,
9991000
FE_RENDER_HTML,
10001001
FE_RENDER_WIKI
10011002
};
10021003
10031004
static int fileedit_render_mode_for_mimetype(const char * zMimetype){
@@ -1016,16 +1017,17 @@
10161017
/*
10171018
** Performs the PREVIEW mode for /filepage.
10181019
*/
10191020
static void fileedit_render_preview(Blob * pContent,
10201021
const char *zFilename,
1021
- int flags,
1022
+ int flags, int renderMode,
10221023
int nIframeHeightEm){
10231024
const char * zMime;
1024
- int renderMode = FE_RENDER_PLAIN_TEXT;
10251025
zMime = mimetype_from_name(zFilename);
1026
+ if(FE_RENDER_GUESS==renderMode){
10261027
renderMode = fileedit_render_mode_for_mimetype(zMime);
1028
+ }
10271029
CX("<div class='fileedit-preview'>");
10281030
CX("<div>Preview</div>");
10291031
switch(renderMode){
10301032
case FE_RENDER_HTML:{
10311033
char * z64 = encode64(blob_str(pContent), blob_size(pContent));
@@ -1038,11 +1040,10 @@
10381040
break;
10391041
}
10401042
case FE_RENDER_WIKI:
10411043
wiki_render_by_mimetype(pContent, zMime);
10421044
break;
1043
- case FE_RENDER_PLAIN_TEXT:
10441045
default:{
10451046
const char *zExt = strrchr(zFilename,'.');
10461047
const char *zContent = blob_str(pContent);
10471048
if(FE_PREVIEW_LINE_NUMBERS & flags){
10481049
output_text_with_line_numbers(zContent, "on");
@@ -1091,10 +1092,11 @@
10911092
int submitMode = SUBMIT_NONE; /* See mapping below */
10921093
int vid, newVid = 0; /* checkin rid */
10931094
int frid = 0; /* File content rid */
10941095
int previewLn = P("preview_ln")!=0; /* Line number mode */
10951096
int previewHtmlHeight = 0; /* iframe height (EMs) */
1097
+ int previewRenderMode = FE_RENDER_GUESS; /* preview mode */
10961098
char * zFileUuid = 0; /* File content UUID */
10971099
Blob err = empty_blob; /* Error report */
10981100
const char * zFlagCheck = 0; /* Temp url flag holder */
10991101
Blob endScript = empty_blob; /* Script code to run at the
11001102
end. This content will be
@@ -1342,15 +1344,33 @@
13421344
CX("<button type='submit' name='submit' value='2'>"
13431345
"Preview</button>");
13441346
CX("<button type='submit' name='submit' value='3'>"
13451347
"Diff (TODO)</button>");
13461348
{
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
+ }
13501354
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){
13521372
/* HTML preview mode iframe height... */
13531373
int i;
13541374
if(submitMode==SUBMIT_PREVIEW){
13551375
previewHtmlHeight = atoi(PD("preview_html_ems","0"));
13561376
}else{
@@ -1366,11 +1386,11 @@
13661386
CX("<option value='%d'%s>%d</option>\n",
13671387
i, (previewHtmlHeight==i) ? " selected" : "", i);
13681388
}
13691389
CX("</select>\n");
13701390
}
1371
- else if(FE_RENDER_PLAIN_TEXT == renderMode){
1391
+ else if(FE_RENDER_PLAIN_TEXT==previewRenderMode){
13721392
style_labeled_checkbox("preview_ln",
13731393
"Add line numbers to plain-text previews?",
13741394
"1",
13751395
"If on, plain-text files (only) will get "
13761396
"line numbers added to the preview.",
@@ -1475,11 +1495,11 @@
14751495
blob_reset(&manifest);
14761496
}else if(SUBMIT_PREVIEW==submitMode){
14771497
int pflags = 0;
14781498
if(previewLn) pflags |= FE_PREVIEW_LINE_NUMBERS;
14791499
fileedit_render_preview(&cimi.fileContent, cimi.zFilename, pflags,
1480
- previewHtmlHeight);
1500
+ previewRenderMode, previewHtmlHeight);
14811501
}else if(SUBMIT_DIFF==submitMode/*diff*/){
14821502
fail((&err,"Diff mode is still TODO."));
14831503
}else{
14841504
/* Ignore invalid submitMode value */
14851505
goto end_footer;
14861506
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button