Fossil SCM
Sync with trunk and resolve the merge conflicts in the 'fossil.diff.js' script.
Commit
ac3d7c9b4fa7c042f419f6a63c7cf1943a28c6e2290de7f16ec11522f9765c59
Parent
ddf26dd3ffe57bf…
14 files changed
+3
-1
+12
-1
+12
-1
+1
-1
+1
-1
+3
-2
+4
-1
+4
-1
+3
-3
+20
-20
+6
+2
+6
-3
+13
-5
+3
-1
| --- src/builtin.c | ||
| +++ src/builtin.c | ||
| @@ -718,11 +718,13 @@ | ||
| 718 | 718 | ** the final one! */ |
| 719 | 719 | } fjs[] = { |
| 720 | 720 | /* This list ordering isn't strictly important. */ |
| 721 | 721 | {"confirmer", 0, 0}, |
| 722 | 722 | {"copybutton", 0, "dom\0"}, |
| 723 | - {"diff", 0, "dom\0fetch\0"}, | |
| 723 | + {"diff", 0, "dom\0fetch\0storage\0" | |
| 724 | + /* maintenance note: "diff" needs "storage" for storing the the | |
| 725 | + ** sbs-sync-scroll toggle. */}, | |
| 724 | 726 | {"dom", 0, 0}, |
| 725 | 727 | {"fetch", 0, 0}, |
| 726 | 728 | {"numbered-lines", 0, "popupwidget\0copybutton\0"}, |
| 727 | 729 | {"pikchr", 0, "dom\0"}, |
| 728 | 730 | {"popupwidget", 0, "dom\0"}, |
| 729 | 731 |
| --- src/builtin.c | |
| +++ src/builtin.c | |
| @@ -718,11 +718,13 @@ | |
| 718 | ** the final one! */ |
| 719 | } fjs[] = { |
| 720 | /* This list ordering isn't strictly important. */ |
| 721 | {"confirmer", 0, 0}, |
| 722 | {"copybutton", 0, "dom\0"}, |
| 723 | {"diff", 0, "dom\0fetch\0"}, |
| 724 | {"dom", 0, 0}, |
| 725 | {"fetch", 0, 0}, |
| 726 | {"numbered-lines", 0, "popupwidget\0copybutton\0"}, |
| 727 | {"pikchr", 0, "dom\0"}, |
| 728 | {"popupwidget", 0, "dom\0"}, |
| 729 |
| --- src/builtin.c | |
| +++ src/builtin.c | |
| @@ -718,11 +718,13 @@ | |
| 718 | ** the final one! */ |
| 719 | } fjs[] = { |
| 720 | /* This list ordering isn't strictly important. */ |
| 721 | {"confirmer", 0, 0}, |
| 722 | {"copybutton", 0, "dom\0"}, |
| 723 | {"diff", 0, "dom\0fetch\0storage\0" |
| 724 | /* maintenance note: "diff" needs "storage" for storing the the |
| 725 | ** sbs-sync-scroll toggle. */}, |
| 726 | {"dom", 0, 0}, |
| 727 | {"fetch", 0, 0}, |
| 728 | {"numbered-lines", 0, "popupwidget\0copybutton\0"}, |
| 729 | {"pikchr", 0, "dom\0"}, |
| 730 | {"popupwidget", 0, "dom\0"}, |
| 731 |
+12
-1
| --- src/default.css | ||
| +++ src/default.css | ||
| @@ -866,10 +866,17 @@ | ||
| 866 | 866 | padding: 1px; |
| 867 | 867 | } |
| 868 | 868 | div.forum_body p { |
| 869 | 869 | margin-top: 0; |
| 870 | 870 | } |
| 871 | +div.forum-editor-widget{ | |
| 872 | + display: flex; | |
| 873 | + flex-direction: column; | |
| 874 | +} | |
| 875 | +div.forum-editor-widget > textarea { | |
| 876 | + max-width: initial; | |
| 877 | +} | |
| 871 | 878 | td.form_label { |
| 872 | 879 | vertical-align: top; |
| 873 | 880 | text-align: right; |
| 874 | 881 | } |
| 875 | 882 | .debug { |
| @@ -927,12 +934,16 @@ | ||
| 927 | 934 | div.forumpost-single-controls { |
| 928 | 935 | /* UI controls along the bottom of a single post |
| 929 | 936 | ** in the thread view. */ |
| 930 | 937 | } |
| 931 | 938 | .forum div > form { |
| 939 | + width: 100%; | |
| 932 | 940 | margin: 0.5em 0; |
| 933 | - display: inline-block; | |
| 941 | + display: block; | |
| 942 | +} | |
| 943 | +.forum div > form > * { | |
| 944 | + margin-bottom: 0.35em; | |
| 934 | 945 | } |
| 935 | 946 | .forum-post-collapser { |
| 936 | 947 | /* Common style for the bottom-of-post and right-of-post |
| 937 | 948 | expand/collapse widgets. */ |
| 938 | 949 | font-size: 0.8em; |
| 939 | 950 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -866,10 +866,17 @@ | |
| 866 | padding: 1px; |
| 867 | } |
| 868 | div.forum_body p { |
| 869 | margin-top: 0; |
| 870 | } |
| 871 | td.form_label { |
| 872 | vertical-align: top; |
| 873 | text-align: right; |
| 874 | } |
| 875 | .debug { |
| @@ -927,12 +934,16 @@ | |
| 927 | div.forumpost-single-controls { |
| 928 | /* UI controls along the bottom of a single post |
| 929 | ** in the thread view. */ |
| 930 | } |
| 931 | .forum div > form { |
| 932 | margin: 0.5em 0; |
| 933 | display: inline-block; |
| 934 | } |
| 935 | .forum-post-collapser { |
| 936 | /* Common style for the bottom-of-post and right-of-post |
| 937 | expand/collapse widgets. */ |
| 938 | font-size: 0.8em; |
| 939 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -866,10 +866,17 @@ | |
| 866 | padding: 1px; |
| 867 | } |
| 868 | div.forum_body p { |
| 869 | margin-top: 0; |
| 870 | } |
| 871 | div.forum-editor-widget{ |
| 872 | display: flex; |
| 873 | flex-direction: column; |
| 874 | } |
| 875 | div.forum-editor-widget > textarea { |
| 876 | max-width: initial; |
| 877 | } |
| 878 | td.form_label { |
| 879 | vertical-align: top; |
| 880 | text-align: right; |
| 881 | } |
| 882 | .debug { |
| @@ -927,12 +934,16 @@ | |
| 934 | div.forumpost-single-controls { |
| 935 | /* UI controls along the bottom of a single post |
| 936 | ** in the thread view. */ |
| 937 | } |
| 938 | .forum div > form { |
| 939 | width: 100%; |
| 940 | margin: 0.5em 0; |
| 941 | display: block; |
| 942 | } |
| 943 | .forum div > form > * { |
| 944 | margin-bottom: 0.35em; |
| 945 | } |
| 946 | .forum-post-collapser { |
| 947 | /* Common style for the bottom-of-post and right-of-post |
| 948 | expand/collapse widgets. */ |
| 949 | font-size: 0.8em; |
| 950 |
+12
-1
| --- src/default.css | ||
| +++ src/default.css | ||
| @@ -866,10 +866,17 @@ | ||
| 866 | 866 | padding: 1px; |
| 867 | 867 | } |
| 868 | 868 | div.forum_body p { |
| 869 | 869 | margin-top: 0; |
| 870 | 870 | } |
| 871 | +div.forum-editor-widget{ | |
| 872 | + display: flex; | |
| 873 | + flex-direction: column; | |
| 874 | +} | |
| 875 | +div.forum-editor-widget > textarea { | |
| 876 | + max-width: initial; | |
| 877 | +} | |
| 871 | 878 | td.form_label { |
| 872 | 879 | vertical-align: top; |
| 873 | 880 | text-align: right; |
| 874 | 881 | } |
| 875 | 882 | .debug { |
| @@ -927,12 +934,16 @@ | ||
| 927 | 934 | div.forumpost-single-controls { |
| 928 | 935 | /* UI controls along the bottom of a single post |
| 929 | 936 | ** in the thread view. */ |
| 930 | 937 | } |
| 931 | 938 | .forum div > form { |
| 939 | + width: 100%; | |
| 932 | 940 | margin: 0.5em 0; |
| 933 | - display: inline-block; | |
| 941 | + display: block; | |
| 942 | +} | |
| 943 | +.forum div > form > * { | |
| 944 | + margin-bottom: 0.35em; | |
| 934 | 945 | } |
| 935 | 946 | .forum-post-collapser { |
| 936 | 947 | /* Common style for the bottom-of-post and right-of-post |
| 937 | 948 | expand/collapse widgets. */ |
| 938 | 949 | font-size: 0.8em; |
| 939 | 950 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -866,10 +866,17 @@ | |
| 866 | padding: 1px; |
| 867 | } |
| 868 | div.forum_body p { |
| 869 | margin-top: 0; |
| 870 | } |
| 871 | td.form_label { |
| 872 | vertical-align: top; |
| 873 | text-align: right; |
| 874 | } |
| 875 | .debug { |
| @@ -927,12 +934,16 @@ | |
| 927 | div.forumpost-single-controls { |
| 928 | /* UI controls along the bottom of a single post |
| 929 | ** in the thread view. */ |
| 930 | } |
| 931 | .forum div > form { |
| 932 | margin: 0.5em 0; |
| 933 | display: inline-block; |
| 934 | } |
| 935 | .forum-post-collapser { |
| 936 | /* Common style for the bottom-of-post and right-of-post |
| 937 | expand/collapse widgets. */ |
| 938 | font-size: 0.8em; |
| 939 |
| --- src/default.css | |
| +++ src/default.css | |
| @@ -866,10 +866,17 @@ | |
| 866 | padding: 1px; |
| 867 | } |
| 868 | div.forum_body p { |
| 869 | margin-top: 0; |
| 870 | } |
| 871 | div.forum-editor-widget{ |
| 872 | display: flex; |
| 873 | flex-direction: column; |
| 874 | } |
| 875 | div.forum-editor-widget > textarea { |
| 876 | max-width: initial; |
| 877 | } |
| 878 | td.form_label { |
| 879 | vertical-align: top; |
| 880 | text-align: right; |
| 881 | } |
| 882 | .debug { |
| @@ -927,12 +934,16 @@ | |
| 934 | div.forumpost-single-controls { |
| 935 | /* UI controls along the bottom of a single post |
| 936 | ** in the thread view. */ |
| 937 | } |
| 938 | .forum div > form { |
| 939 | width: 100%; |
| 940 | margin: 0.5em 0; |
| 941 | display: block; |
| 942 | } |
| 943 | .forum div > form > * { |
| 944 | margin-bottom: 0.35em; |
| 945 | } |
| 946 | .forum-post-collapser { |
| 947 | /* Common style for the bottom-of-post and right-of-post |
| 948 | expand/collapse widgets. */ |
| 949 | font-size: 0.8em; |
| 950 |
+1
-1
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -3656,11 +3656,11 @@ | ||
| 3656 | 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | 3659 | |
| 3660 | 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | - zRevision = find_option("r","revision",1); | |
| 3661 | + zRevision = find_option("revision","r",1); | |
| 3662 | 3662 | zLimit = find_option("limit","n",1); |
| 3663 | 3663 | zOrig = find_option("origin","o",1); |
| 3664 | 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 | 3667 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -3656,11 +3656,11 @@ | |
| 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | |
| 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | zRevision = find_option("r","revision",1); |
| 3662 | zLimit = find_option("limit","n",1); |
| 3663 | zOrig = find_option("origin","o",1); |
| 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -3656,11 +3656,11 @@ | |
| 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | |
| 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | zRevision = find_option("revision","r",1); |
| 3662 | zLimit = find_option("limit","n",1); |
| 3663 | zOrig = find_option("origin","o",1); |
| 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 |
+1
-1
| --- src/diff.c | ||
| +++ src/diff.c | ||
| @@ -3656,11 +3656,11 @@ | ||
| 3656 | 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | 3659 | |
| 3660 | 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | - zRevision = find_option("r","revision",1); | |
| 3661 | + zRevision = find_option("revision","r",1); | |
| 3662 | 3662 | zLimit = find_option("limit","n",1); |
| 3663 | 3663 | zOrig = find_option("origin","o",1); |
| 3664 | 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 | 3667 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -3656,11 +3656,11 @@ | |
| 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | |
| 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | zRevision = find_option("r","revision",1); |
| 3662 | zLimit = find_option("limit","n",1); |
| 3663 | zOrig = find_option("origin","o",1); |
| 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 |
| --- src/diff.c | |
| +++ src/diff.c | |
| @@ -3656,11 +3656,11 @@ | |
| 3656 | int szHash; /* Display size of a version hash */ |
| 3657 | Blob treename; /* Name of file to be annotated */ |
| 3658 | char *zFilename; /* Name of file to be annotated */ |
| 3659 | |
| 3660 | bBlame = g.argv[1][0]!='a'; |
| 3661 | zRevision = find_option("revision","r",1); |
| 3662 | zLimit = find_option("limit","n",1); |
| 3663 | zOrig = find_option("origin","o",1); |
| 3664 | showLog = find_option("log","l",0)!=0; |
| 3665 | if( find_option("ignore-trailing-space","Z",0)!=0 ){ |
| 3666 | annFlags = DIFF_IGNORE_EOLWS; |
| 3667 |
+3
-2
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -1397,12 +1397,13 @@ | ||
| 1397 | 1397 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1398 | 1398 | @ maxlength="125"><br> |
| 1399 | 1399 | } |
| 1400 | 1400 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1401 | 1401 | mimetype_option_menu(zMimetype, "mimetype"); |
| 1402 | - @ <br><textarea aria-label="Content:" name="content" class="wikiedit" \ | |
| 1403 | - @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea><br> | |
| 1402 | + @ <div class="forum-editor-widget"> | |
| 1403 | + @ <textarea aria-label="Content:" name="content" class="wikiedit" \ | |
| 1404 | + @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea></div> | |
| 1404 | 1405 | } |
| 1405 | 1406 | |
| 1406 | 1407 | /* |
| 1407 | 1408 | ** WEBPAGE: forumpost_close hidden |
| 1408 | 1409 | ** WEBPAGE: forumpost_reopen hidden |
| 1409 | 1410 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -1397,12 +1397,13 @@ | |
| 1397 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1398 | @ maxlength="125"><br> |
| 1399 | } |
| 1400 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1401 | mimetype_option_menu(zMimetype, "mimetype"); |
| 1402 | @ <br><textarea aria-label="Content:" name="content" class="wikiedit" \ |
| 1403 | @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea><br> |
| 1404 | } |
| 1405 | |
| 1406 | /* |
| 1407 | ** WEBPAGE: forumpost_close hidden |
| 1408 | ** WEBPAGE: forumpost_reopen hidden |
| 1409 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -1397,12 +1397,13 @@ | |
| 1397 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1398 | @ maxlength="125"><br> |
| 1399 | } |
| 1400 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1401 | mimetype_option_menu(zMimetype, "mimetype"); |
| 1402 | @ <div class="forum-editor-widget"> |
| 1403 | @ <textarea aria-label="Content:" name="content" class="wikiedit" \ |
| 1404 | @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea></div> |
| 1405 | } |
| 1406 | |
| 1407 | /* |
| 1408 | ** WEBPAGE: forumpost_close hidden |
| 1409 | ** WEBPAGE: forumpost_reopen hidden |
| 1410 |
+4
-1
| --- src/fossil.diff.js | ||
| +++ src/fossil.diff.js | ||
| @@ -6,15 +6,18 @@ | ||
| 6 | 6 | /** |
| 7 | 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | 8 | /info and similar pages. |
| 9 | 9 | */ |
| 10 | 10 | const D = window.fossil.dom; |
| 11 | + const isFdiff = !!document.querySelector('body.fdiff'); | |
| 11 | 12 | const addToggle = function(diffElem){ |
| 12 | 13 | const sib = diffElem.previousElementSibling, |
| 13 | 14 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 14 | 15 | if(!sib) return; |
| 15 | - D.append(sib,btn); | |
| 16 | + if(isFdiff) sib.parentElement.insertBefore( | |
| 17 | + D.append(D.div(),btn),sib.nextElementSibling); | |
| 18 | + else D.append(sib,btn); | |
| 16 | 19 | btn.addEventListener('click', function(){ |
| 17 | 20 | diffElem.classList.toggle('hidden'); |
| 18 | 21 | }, false); |
| 19 | 22 | }; |
| 20 | 23 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 | 24 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -6,15 +6,18 @@ | |
| 6 | /** |
| 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | /info and similar pages. |
| 9 | */ |
| 10 | const D = window.fossil.dom; |
| 11 | const addToggle = function(diffElem){ |
| 12 | const sib = diffElem.previousElementSibling, |
| 13 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 14 | if(!sib) return; |
| 15 | D.append(sib,btn); |
| 16 | btn.addEventListener('click', function(){ |
| 17 | diffElem.classList.toggle('hidden'); |
| 18 | }, false); |
| 19 | }; |
| 20 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -6,15 +6,18 @@ | |
| 6 | /** |
| 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | /info and similar pages. |
| 9 | */ |
| 10 | const D = window.fossil.dom; |
| 11 | const isFdiff = !!document.querySelector('body.fdiff'); |
| 12 | const addToggle = function(diffElem){ |
| 13 | const sib = diffElem.previousElementSibling, |
| 14 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 15 | if(!sib) return; |
| 16 | if(isFdiff) sib.parentElement.insertBefore( |
| 17 | D.append(D.div(),btn),sib.nextElementSibling); |
| 18 | else D.append(sib,btn); |
| 19 | btn.addEventListener('click', function(){ |
| 20 | diffElem.classList.toggle('hidden'); |
| 21 | }, false); |
| 22 | }; |
| 23 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 24 |
+4
-1
| --- src/fossil.diff.js | ||
| +++ src/fossil.diff.js | ||
| @@ -6,15 +6,18 @@ | ||
| 6 | 6 | /** |
| 7 | 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | 8 | /info and similar pages. |
| 9 | 9 | */ |
| 10 | 10 | const D = window.fossil.dom; |
| 11 | + const isFdiff = !!document.querySelector('body.fdiff'); | |
| 11 | 12 | const addToggle = function(diffElem){ |
| 12 | 13 | const sib = diffElem.previousElementSibling, |
| 13 | 14 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 14 | 15 | if(!sib) return; |
| 15 | - D.append(sib,btn); | |
| 16 | + if(isFdiff) sib.parentElement.insertBefore( | |
| 17 | + D.append(D.div(),btn),sib.nextElementSibling); | |
| 18 | + else D.append(sib,btn); | |
| 16 | 19 | btn.addEventListener('click', function(){ |
| 17 | 20 | diffElem.classList.toggle('hidden'); |
| 18 | 21 | }, false); |
| 19 | 22 | }; |
| 20 | 23 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 | 24 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -6,15 +6,18 @@ | |
| 6 | /** |
| 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | /info and similar pages. |
| 9 | */ |
| 10 | const D = window.fossil.dom; |
| 11 | const addToggle = function(diffElem){ |
| 12 | const sib = diffElem.previousElementSibling, |
| 13 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 14 | if(!sib) return; |
| 15 | D.append(sib,btn); |
| 16 | btn.addEventListener('click', function(){ |
| 17 | diffElem.classList.toggle('hidden'); |
| 18 | }, false); |
| 19 | }; |
| 20 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 21 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -6,15 +6,18 @@ | |
| 6 | /** |
| 7 | Adds toggle checkboxes to each file entry in the diff views for |
| 8 | /info and similar pages. |
| 9 | */ |
| 10 | const D = window.fossil.dom; |
| 11 | const isFdiff = !!document.querySelector('body.fdiff'); |
| 12 | const addToggle = function(diffElem){ |
| 13 | const sib = diffElem.previousElementSibling, |
| 14 | btn = sib ? D.addClass(D.checkbox(true), 'diff-toggle') : 0; |
| 15 | if(!sib) return; |
| 16 | if(isFdiff) sib.parentElement.insertBefore( |
| 17 | D.append(D.div(),btn),sib.nextElementSibling); |
| 18 | else D.append(sib,btn); |
| 19 | btn.addEventListener('click', function(){ |
| 20 | diffElem.classList.toggle('hidden'); |
| 21 | }, false); |
| 22 | }; |
| 23 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 24 |
+3
-3
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -751,11 +751,11 @@ | ||
| 751 | 751 | if( anonFlag ){ |
| 752 | 752 | @ <input type="hidden" name="anon" value="1"> |
| 753 | 753 | } |
| 754 | 754 | if( g.zLogin ){ |
| 755 | 755 | @ <p>Currently logged in as <b>%h(g.zLogin)</b>. |
| 756 | - @ <input type="submit" name="out" value="Logout"></p> | |
| 756 | + @ <input type="submit" name="out" value="Logout" autofocus></p> | |
| 757 | 757 | @ </form> |
| 758 | 758 | }else{ |
| 759 | 759 | unsigned int uSeed = captcha_seed(); |
| 760 | 760 | if( g.zLogin==0 && (anonFlag || zGoto==0) ){ |
| 761 | 761 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| @@ -777,11 +777,11 @@ | ||
| 777 | 777 | @ </span></td></tr> |
| 778 | 778 | } |
| 779 | 779 | @ <tr> |
| 780 | 780 | @ <td class="form_label" id="userlabel1">User ID:</td> |
| 781 | 781 | @ <td><input type="text" id="u" aria-labelledby="userlabel1" name="u" \ |
| 782 | - @ size="30" value="%s(anonFlag?"anonymous":"")"></td> | |
| 782 | + @ size="30" value="%s(anonFlag?"anonymous":"")" autofocus></td> | |
| 783 | 783 | @ </tr> |
| 784 | 784 | @ <tr> |
| 785 | 785 | @ <td class="form_label" id="pswdlabel">Password:</td> |
| 786 | 786 | @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ |
| 787 | 787 | @ name="p" value="" size="30">\ |
| @@ -2243,11 +2243,11 @@ | ||
| 2243 | 2243 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)"> |
| 2244 | 2244 | @ <table class="login_out"> |
| 2245 | 2245 | @ <tr> |
| 2246 | 2246 | @ <td class="form_label" align="right" id="uid">User ID:</td> |
| 2247 | 2247 | @ <td><input aria-labelledby="uid" type="text" name="u" \ |
| 2248 | - @ value="%h(zUserID)" size="30"></td> | |
| 2248 | + @ value="%h(zUserID)" size="30" autofocus></td> | |
| 2249 | 2249 | @ |
| 2250 | 2250 | if( iErrLine==1 ){ |
| 2251 | 2251 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 2252 | 2252 | } |
| 2253 | 2253 | @ <tr> |
| 2254 | 2254 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -751,11 +751,11 @@ | |
| 751 | if( anonFlag ){ |
| 752 | @ <input type="hidden" name="anon" value="1"> |
| 753 | } |
| 754 | if( g.zLogin ){ |
| 755 | @ <p>Currently logged in as <b>%h(g.zLogin)</b>. |
| 756 | @ <input type="submit" name="out" value="Logout"></p> |
| 757 | @ </form> |
| 758 | }else{ |
| 759 | unsigned int uSeed = captcha_seed(); |
| 760 | if( g.zLogin==0 && (anonFlag || zGoto==0) ){ |
| 761 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| @@ -777,11 +777,11 @@ | |
| 777 | @ </span></td></tr> |
| 778 | } |
| 779 | @ <tr> |
| 780 | @ <td class="form_label" id="userlabel1">User ID:</td> |
| 781 | @ <td><input type="text" id="u" aria-labelledby="userlabel1" name="u" \ |
| 782 | @ size="30" value="%s(anonFlag?"anonymous":"")"></td> |
| 783 | @ </tr> |
| 784 | @ <tr> |
| 785 | @ <td class="form_label" id="pswdlabel">Password:</td> |
| 786 | @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ |
| 787 | @ name="p" value="" size="30">\ |
| @@ -2243,11 +2243,11 @@ | |
| 2243 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)"> |
| 2244 | @ <table class="login_out"> |
| 2245 | @ <tr> |
| 2246 | @ <td class="form_label" align="right" id="uid">User ID:</td> |
| 2247 | @ <td><input aria-labelledby="uid" type="text" name="u" \ |
| 2248 | @ value="%h(zUserID)" size="30"></td> |
| 2249 | @ |
| 2250 | if( iErrLine==1 ){ |
| 2251 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 2252 | } |
| 2253 | @ <tr> |
| 2254 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -751,11 +751,11 @@ | |
| 751 | if( anonFlag ){ |
| 752 | @ <input type="hidden" name="anon" value="1"> |
| 753 | } |
| 754 | if( g.zLogin ){ |
| 755 | @ <p>Currently logged in as <b>%h(g.zLogin)</b>. |
| 756 | @ <input type="submit" name="out" value="Logout" autofocus></p> |
| 757 | @ </form> |
| 758 | }else{ |
| 759 | unsigned int uSeed = captcha_seed(); |
| 760 | if( g.zLogin==0 && (anonFlag || zGoto==0) ){ |
| 761 | zAnonPw = db_text(0, "SELECT pw FROM user" |
| @@ -777,11 +777,11 @@ | |
| 777 | @ </span></td></tr> |
| 778 | } |
| 779 | @ <tr> |
| 780 | @ <td class="form_label" id="userlabel1">User ID:</td> |
| 781 | @ <td><input type="text" id="u" aria-labelledby="userlabel1" name="u" \ |
| 782 | @ size="30" value="%s(anonFlag?"anonymous":"")" autofocus></td> |
| 783 | @ </tr> |
| 784 | @ <tr> |
| 785 | @ <td class="form_label" id="pswdlabel">Password:</td> |
| 786 | @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ |
| 787 | @ name="p" value="" size="30">\ |
| @@ -2243,11 +2243,11 @@ | |
| 2243 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)"> |
| 2244 | @ <table class="login_out"> |
| 2245 | @ <tr> |
| 2246 | @ <td class="form_label" align="right" id="uid">User ID:</td> |
| 2247 | @ <td><input aria-labelledby="uid" type="text" name="u" \ |
| 2248 | @ value="%h(zUserID)" size="30" autofocus></td> |
| 2249 | @ |
| 2250 | if( iErrLine==1 ){ |
| 2251 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 2252 | } |
| 2253 | @ <tr> |
| 2254 |
+20
-20
| --- test/glob.test | ||
| +++ test/glob.test | ||
| @@ -30,40 +30,40 @@ | ||
| 30 | 30 | } |
| 31 | 31 | |
| 32 | 32 | glob-parse 100 test test [string map [list \r\n \n] \ |
| 33 | 33 | {SQL expression: (x GLOB 'test') |
| 34 | 34 | pattern[0] = [test] |
| 35 | -1 test}] | |
| 35 | +1 1 test}] | |
| 36 | 36 | |
| 37 | 37 | glob-parse 101 "one two" one [string map [list \r\n \n] \ |
| 38 | 38 | {SQL expression: (x GLOB 'one' OR x GLOB 'two') |
| 39 | 39 | pattern[0] = [one] |
| 40 | 40 | pattern[1] = [two] |
| 41 | -1 one}] | |
| 41 | +1 1 one}] | |
| 42 | 42 | |
| 43 | 43 | glob-parse 102 t* test [string map [list \r\n \n] \ |
| 44 | 44 | {SQL expression: (x GLOB 't*') |
| 45 | 45 | pattern[0] = [t*] |
| 46 | -1 test}] | |
| 46 | +1 1 test}] | |
| 47 | 47 | |
| 48 | 48 | glob-parse 103 "o* two" one [string map [list \r\n \n] \ |
| 49 | 49 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 50 | 50 | pattern[0] = [o*] |
| 51 | 51 | pattern[1] = [two] |
| 52 | -1 one}] | |
| 52 | +1 1 one}] | |
| 53 | 53 | |
| 54 | 54 | glob-parse 104 {"o* two" "three four"} "one two" [string map [list \r\n \n] \ |
| 55 | 55 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 56 | 56 | pattern[0] = [o* two] |
| 57 | 57 | pattern[1] = [three four] |
| 58 | -1 one two}] | |
| 58 | +1 1 one two}] | |
| 59 | 59 | |
| 60 | 60 | glob-parse 105 {"o* two" "three four"} "two one" [string map [list \r\n \n] \ |
| 61 | 61 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 62 | 62 | pattern[0] = [o* two] |
| 63 | 63 | pattern[1] = [three four] |
| 64 | -0 two one}] | |
| 64 | +0 0 two one}] | |
| 65 | 65 | |
| 66 | 66 | glob-parse 106 "\"o*\ntwo\" \"three\nfour\"" "one\ntwo" \ |
| 67 | 67 | [string map [list \r\n \n] \ |
| 68 | 68 | {SQL expression: (x GLOB 'o* |
| 69 | 69 | two' OR x GLOB 'three |
| @@ -70,11 +70,11 @@ | ||
| 70 | 70 | four') |
| 71 | 71 | pattern[0] = [o* |
| 72 | 72 | two] |
| 73 | 73 | pattern[1] = [three |
| 74 | 74 | four] |
| 75 | -1 one | |
| 75 | +1 1 one | |
| 76 | 76 | two}] |
| 77 | 77 | |
| 78 | 78 | glob-parse 107 "\"o*\ntwo\" \"three\nfour\"" "two\none" \ |
| 79 | 79 | [string map [list \r\n \n] \ |
| 80 | 80 | {SQL expression: (x GLOB 'o* |
| @@ -82,11 +82,11 @@ | ||
| 82 | 82 | four') |
| 83 | 83 | pattern[0] = [o* |
| 84 | 84 | two] |
| 85 | 85 | pattern[1] = [three |
| 86 | 86 | four] |
| 87 | -0 two | |
| 87 | +0 0 two | |
| 88 | 88 | one}] |
| 89 | 89 | |
| 90 | 90 | glob-parse 108 "\"o*\rtwo\" \"three\rfour\"" "one\rtwo" \ |
| 91 | 91 | [string map [list \r\n \n] \ |
| 92 | 92 | {SQL expression: (x GLOB 'o* |
| @@ -94,11 +94,11 @@ | ||
| 94 | 94 | four') |
| 95 | 95 | pattern[0] = [o* |
| 96 | 96 | two] |
| 97 | 97 | pattern[1] = [three |
| 98 | 98 | four] |
| 99 | -1 one | |
| 99 | +1 1 one | |
| 100 | 100 | two}] |
| 101 | 101 | |
| 102 | 102 | glob-parse 109 "\"o*\rtwo\" \"three\rfour\"" "two\rone" \ |
| 103 | 103 | [string map [list \r\n \n] \ |
| 104 | 104 | {SQL expression: (x GLOB 'o* |
| @@ -106,11 +106,11 @@ | ||
| 106 | 106 | four') |
| 107 | 107 | pattern[0] = [o* |
| 108 | 108 | two] |
| 109 | 109 | pattern[1] = [three |
| 110 | 110 | four] |
| 111 | -0 two | |
| 111 | +0 0 two | |
| 112 | 112 | one}] |
| 113 | 113 | |
| 114 | 114 | glob-parse 110 "'o*\ntwo' 'three\nfour'" "one\ntwo" \ |
| 115 | 115 | [string map [list \r\n \n] \ |
| 116 | 116 | {SQL expression: (x GLOB 'o* |
| @@ -118,11 +118,11 @@ | ||
| 118 | 118 | four') |
| 119 | 119 | pattern[0] = [o* |
| 120 | 120 | two] |
| 121 | 121 | pattern[1] = [three |
| 122 | 122 | four] |
| 123 | -1 one | |
| 123 | +1 1 one | |
| 124 | 124 | two}] |
| 125 | 125 | |
| 126 | 126 | glob-parse 111 "'o*\ntwo' 'three\nfour'" "two\none" \ |
| 127 | 127 | [string map [list \r\n \n] \ |
| 128 | 128 | {SQL expression: (x GLOB 'o* |
| @@ -130,61 +130,61 @@ | ||
| 130 | 130 | four') |
| 131 | 131 | pattern[0] = [o* |
| 132 | 132 | two] |
| 133 | 133 | pattern[1] = [three |
| 134 | 134 | four] |
| 135 | -0 two | |
| 135 | +0 0 two | |
| 136 | 136 | one}] |
| 137 | 137 | |
| 138 | 138 | glob-parse 112 "\"'o*' 'two'\" \"'three' 'four'\"" "'one' 'two'" \ |
| 139 | 139 | [string map [list \r\n \n] \ |
| 140 | 140 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 141 | 141 | pattern[0] = ['o*' 'two'] |
| 142 | 142 | pattern[1] = ['three' 'four'] |
| 143 | -1 'one' 'two'}] | |
| 143 | +1 1 'one' 'two'}] | |
| 144 | 144 | |
| 145 | 145 | glob-parse 113 "\"'o*' 'two'\" \"'three' 'four'\"" "two one" \ |
| 146 | 146 | [string map [list \r\n \n] \ |
| 147 | 147 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 148 | 148 | pattern[0] = ['o*' 'two'] |
| 149 | 149 | pattern[1] = ['three' 'four'] |
| 150 | -0 two one}] | |
| 150 | +0 0 two one}] | |
| 151 | 151 | |
| 152 | 152 | glob-parse 114 o*,two one [string map [list \r\n \n] \ |
| 153 | 153 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 154 | 154 | pattern[0] = [o*] |
| 155 | 155 | pattern[1] = [two] |
| 156 | -1 one}] | |
| 156 | +1 1 one}] | |
| 157 | 157 | |
| 158 | 158 | glob-parse 115 "o*,two three,four" "one two" [string map [list \r\n \n] \ |
| 159 | 159 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two' OR x GLOB 'three' OR x GLOB 'four') |
| 160 | 160 | pattern[0] = [o*] |
| 161 | 161 | pattern[1] = [two] |
| 162 | 162 | pattern[2] = [three] |
| 163 | 163 | pattern[3] = [four] |
| 164 | -1 one two}] | |
| 164 | +1 1 one two}] | |
| 165 | 165 | |
| 166 | 166 | glob-parse 116 'o*,two' one [string map [list \r\n \n] \ |
| 167 | 167 | {SQL expression: (x GLOB 'o*,two') |
| 168 | 168 | pattern[0] = [o*,two] |
| 169 | -0 one}] | |
| 169 | +0 0 one}] | |
| 170 | 170 | |
| 171 | 171 | glob-parse 117 'o*,two' one,two [string map [list \r\n \n] \ |
| 172 | 172 | {SQL expression: (x GLOB 'o*,two') |
| 173 | 173 | pattern[0] = [o*,two] |
| 174 | -1 one,two}] | |
| 174 | +1 1 one,two}] | |
| 175 | 175 | |
| 176 | 176 | glob-parse 118 "'o*,two three,four'" "one two three,four" \ |
| 177 | 177 | [string map [list \r\n \n] \ |
| 178 | 178 | {SQL expression: (x GLOB 'o*,two three,four') |
| 179 | 179 | pattern[0] = [o*,two three,four] |
| 180 | -0 one two three,four}] | |
| 180 | +0 0 one two three,four}] | |
| 181 | 181 | |
| 182 | 182 | glob-parse 119 "'o*,two three,four'" "one,two three,four" \ |
| 183 | 183 | [string map [list \r\n \n] \ |
| 184 | 184 | {SQL expression: (x GLOB 'o*,two three,four') |
| 185 | 185 | pattern[0] = [o*,two three,four] |
| 186 | -1 one,two three,four}] | |
| 186 | +1 1 one,two three,four}] | |
| 187 | 187 | |
| 188 | 188 | ############################################################################### |
| 189 | 189 | |
| 190 | 190 | test_cleanup |
| 191 | 191 |
| --- test/glob.test | |
| +++ test/glob.test | |
| @@ -30,40 +30,40 @@ | |
| 30 | } |
| 31 | |
| 32 | glob-parse 100 test test [string map [list \r\n \n] \ |
| 33 | {SQL expression: (x GLOB 'test') |
| 34 | pattern[0] = [test] |
| 35 | 1 test}] |
| 36 | |
| 37 | glob-parse 101 "one two" one [string map [list \r\n \n] \ |
| 38 | {SQL expression: (x GLOB 'one' OR x GLOB 'two') |
| 39 | pattern[0] = [one] |
| 40 | pattern[1] = [two] |
| 41 | 1 one}] |
| 42 | |
| 43 | glob-parse 102 t* test [string map [list \r\n \n] \ |
| 44 | {SQL expression: (x GLOB 't*') |
| 45 | pattern[0] = [t*] |
| 46 | 1 test}] |
| 47 | |
| 48 | glob-parse 103 "o* two" one [string map [list \r\n \n] \ |
| 49 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 50 | pattern[0] = [o*] |
| 51 | pattern[1] = [two] |
| 52 | 1 one}] |
| 53 | |
| 54 | glob-parse 104 {"o* two" "three four"} "one two" [string map [list \r\n \n] \ |
| 55 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 56 | pattern[0] = [o* two] |
| 57 | pattern[1] = [three four] |
| 58 | 1 one two}] |
| 59 | |
| 60 | glob-parse 105 {"o* two" "three four"} "two one" [string map [list \r\n \n] \ |
| 61 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 62 | pattern[0] = [o* two] |
| 63 | pattern[1] = [three four] |
| 64 | 0 two one}] |
| 65 | |
| 66 | glob-parse 106 "\"o*\ntwo\" \"three\nfour\"" "one\ntwo" \ |
| 67 | [string map [list \r\n \n] \ |
| 68 | {SQL expression: (x GLOB 'o* |
| 69 | two' OR x GLOB 'three |
| @@ -70,11 +70,11 @@ | |
| 70 | four') |
| 71 | pattern[0] = [o* |
| 72 | two] |
| 73 | pattern[1] = [three |
| 74 | four] |
| 75 | 1 one |
| 76 | two}] |
| 77 | |
| 78 | glob-parse 107 "\"o*\ntwo\" \"three\nfour\"" "two\none" \ |
| 79 | [string map [list \r\n \n] \ |
| 80 | {SQL expression: (x GLOB 'o* |
| @@ -82,11 +82,11 @@ | |
| 82 | four') |
| 83 | pattern[0] = [o* |
| 84 | two] |
| 85 | pattern[1] = [three |
| 86 | four] |
| 87 | 0 two |
| 88 | one}] |
| 89 | |
| 90 | glob-parse 108 "\"o*\rtwo\" \"three\rfour\"" "one\rtwo" \ |
| 91 | [string map [list \r\n \n] \ |
| 92 | {SQL expression: (x GLOB 'o* |
| @@ -94,11 +94,11 @@ | |
| 94 | four') |
| 95 | pattern[0] = [o* |
| 96 | two] |
| 97 | pattern[1] = [three |
| 98 | four] |
| 99 | 1 one |
| 100 | two}] |
| 101 | |
| 102 | glob-parse 109 "\"o*\rtwo\" \"three\rfour\"" "two\rone" \ |
| 103 | [string map [list \r\n \n] \ |
| 104 | {SQL expression: (x GLOB 'o* |
| @@ -106,11 +106,11 @@ | |
| 106 | four') |
| 107 | pattern[0] = [o* |
| 108 | two] |
| 109 | pattern[1] = [three |
| 110 | four] |
| 111 | 0 two |
| 112 | one}] |
| 113 | |
| 114 | glob-parse 110 "'o*\ntwo' 'three\nfour'" "one\ntwo" \ |
| 115 | [string map [list \r\n \n] \ |
| 116 | {SQL expression: (x GLOB 'o* |
| @@ -118,11 +118,11 @@ | |
| 118 | four') |
| 119 | pattern[0] = [o* |
| 120 | two] |
| 121 | pattern[1] = [three |
| 122 | four] |
| 123 | 1 one |
| 124 | two}] |
| 125 | |
| 126 | glob-parse 111 "'o*\ntwo' 'three\nfour'" "two\none" \ |
| 127 | [string map [list \r\n \n] \ |
| 128 | {SQL expression: (x GLOB 'o* |
| @@ -130,61 +130,61 @@ | |
| 130 | four') |
| 131 | pattern[0] = [o* |
| 132 | two] |
| 133 | pattern[1] = [three |
| 134 | four] |
| 135 | 0 two |
| 136 | one}] |
| 137 | |
| 138 | glob-parse 112 "\"'o*' 'two'\" \"'three' 'four'\"" "'one' 'two'" \ |
| 139 | [string map [list \r\n \n] \ |
| 140 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 141 | pattern[0] = ['o*' 'two'] |
| 142 | pattern[1] = ['three' 'four'] |
| 143 | 1 'one' 'two'}] |
| 144 | |
| 145 | glob-parse 113 "\"'o*' 'two'\" \"'three' 'four'\"" "two one" \ |
| 146 | [string map [list \r\n \n] \ |
| 147 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 148 | pattern[0] = ['o*' 'two'] |
| 149 | pattern[1] = ['three' 'four'] |
| 150 | 0 two one}] |
| 151 | |
| 152 | glob-parse 114 o*,two one [string map [list \r\n \n] \ |
| 153 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 154 | pattern[0] = [o*] |
| 155 | pattern[1] = [two] |
| 156 | 1 one}] |
| 157 | |
| 158 | glob-parse 115 "o*,two three,four" "one two" [string map [list \r\n \n] \ |
| 159 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two' OR x GLOB 'three' OR x GLOB 'four') |
| 160 | pattern[0] = [o*] |
| 161 | pattern[1] = [two] |
| 162 | pattern[2] = [three] |
| 163 | pattern[3] = [four] |
| 164 | 1 one two}] |
| 165 | |
| 166 | glob-parse 116 'o*,two' one [string map [list \r\n \n] \ |
| 167 | {SQL expression: (x GLOB 'o*,two') |
| 168 | pattern[0] = [o*,two] |
| 169 | 0 one}] |
| 170 | |
| 171 | glob-parse 117 'o*,two' one,two [string map [list \r\n \n] \ |
| 172 | {SQL expression: (x GLOB 'o*,two') |
| 173 | pattern[0] = [o*,two] |
| 174 | 1 one,two}] |
| 175 | |
| 176 | glob-parse 118 "'o*,two three,four'" "one two three,four" \ |
| 177 | [string map [list \r\n \n] \ |
| 178 | {SQL expression: (x GLOB 'o*,two three,four') |
| 179 | pattern[0] = [o*,two three,four] |
| 180 | 0 one two three,four}] |
| 181 | |
| 182 | glob-parse 119 "'o*,two three,four'" "one,two three,four" \ |
| 183 | [string map [list \r\n \n] \ |
| 184 | {SQL expression: (x GLOB 'o*,two three,four') |
| 185 | pattern[0] = [o*,two three,four] |
| 186 | 1 one,two three,four}] |
| 187 | |
| 188 | ############################################################################### |
| 189 | |
| 190 | test_cleanup |
| 191 |
| --- test/glob.test | |
| +++ test/glob.test | |
| @@ -30,40 +30,40 @@ | |
| 30 | } |
| 31 | |
| 32 | glob-parse 100 test test [string map [list \r\n \n] \ |
| 33 | {SQL expression: (x GLOB 'test') |
| 34 | pattern[0] = [test] |
| 35 | 1 1 test}] |
| 36 | |
| 37 | glob-parse 101 "one two" one [string map [list \r\n \n] \ |
| 38 | {SQL expression: (x GLOB 'one' OR x GLOB 'two') |
| 39 | pattern[0] = [one] |
| 40 | pattern[1] = [two] |
| 41 | 1 1 one}] |
| 42 | |
| 43 | glob-parse 102 t* test [string map [list \r\n \n] \ |
| 44 | {SQL expression: (x GLOB 't*') |
| 45 | pattern[0] = [t*] |
| 46 | 1 1 test}] |
| 47 | |
| 48 | glob-parse 103 "o* two" one [string map [list \r\n \n] \ |
| 49 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 50 | pattern[0] = [o*] |
| 51 | pattern[1] = [two] |
| 52 | 1 1 one}] |
| 53 | |
| 54 | glob-parse 104 {"o* two" "three four"} "one two" [string map [list \r\n \n] \ |
| 55 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 56 | pattern[0] = [o* two] |
| 57 | pattern[1] = [three four] |
| 58 | 1 1 one two}] |
| 59 | |
| 60 | glob-parse 105 {"o* two" "three four"} "two one" [string map [list \r\n \n] \ |
| 61 | {SQL expression: (x GLOB 'o* two' OR x GLOB 'three four') |
| 62 | pattern[0] = [o* two] |
| 63 | pattern[1] = [three four] |
| 64 | 0 0 two one}] |
| 65 | |
| 66 | glob-parse 106 "\"o*\ntwo\" \"three\nfour\"" "one\ntwo" \ |
| 67 | [string map [list \r\n \n] \ |
| 68 | {SQL expression: (x GLOB 'o* |
| 69 | two' OR x GLOB 'three |
| @@ -70,11 +70,11 @@ | |
| 70 | four') |
| 71 | pattern[0] = [o* |
| 72 | two] |
| 73 | pattern[1] = [three |
| 74 | four] |
| 75 | 1 1 one |
| 76 | two}] |
| 77 | |
| 78 | glob-parse 107 "\"o*\ntwo\" \"three\nfour\"" "two\none" \ |
| 79 | [string map [list \r\n \n] \ |
| 80 | {SQL expression: (x GLOB 'o* |
| @@ -82,11 +82,11 @@ | |
| 82 | four') |
| 83 | pattern[0] = [o* |
| 84 | two] |
| 85 | pattern[1] = [three |
| 86 | four] |
| 87 | 0 0 two |
| 88 | one}] |
| 89 | |
| 90 | glob-parse 108 "\"o*\rtwo\" \"three\rfour\"" "one\rtwo" \ |
| 91 | [string map [list \r\n \n] \ |
| 92 | {SQL expression: (x GLOB 'o* |
| @@ -94,11 +94,11 @@ | |
| 94 | four') |
| 95 | pattern[0] = [o* |
| 96 | two] |
| 97 | pattern[1] = [three |
| 98 | four] |
| 99 | 1 1 one |
| 100 | two}] |
| 101 | |
| 102 | glob-parse 109 "\"o*\rtwo\" \"three\rfour\"" "two\rone" \ |
| 103 | [string map [list \r\n \n] \ |
| 104 | {SQL expression: (x GLOB 'o* |
| @@ -106,11 +106,11 @@ | |
| 106 | four') |
| 107 | pattern[0] = [o* |
| 108 | two] |
| 109 | pattern[1] = [three |
| 110 | four] |
| 111 | 0 0 two |
| 112 | one}] |
| 113 | |
| 114 | glob-parse 110 "'o*\ntwo' 'three\nfour'" "one\ntwo" \ |
| 115 | [string map [list \r\n \n] \ |
| 116 | {SQL expression: (x GLOB 'o* |
| @@ -118,11 +118,11 @@ | |
| 118 | four') |
| 119 | pattern[0] = [o* |
| 120 | two] |
| 121 | pattern[1] = [three |
| 122 | four] |
| 123 | 1 1 one |
| 124 | two}] |
| 125 | |
| 126 | glob-parse 111 "'o*\ntwo' 'three\nfour'" "two\none" \ |
| 127 | [string map [list \r\n \n] \ |
| 128 | {SQL expression: (x GLOB 'o* |
| @@ -130,61 +130,61 @@ | |
| 130 | four') |
| 131 | pattern[0] = [o* |
| 132 | two] |
| 133 | pattern[1] = [three |
| 134 | four] |
| 135 | 0 0 two |
| 136 | one}] |
| 137 | |
| 138 | glob-parse 112 "\"'o*' 'two'\" \"'three' 'four'\"" "'one' 'two'" \ |
| 139 | [string map [list \r\n \n] \ |
| 140 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 141 | pattern[0] = ['o*' 'two'] |
| 142 | pattern[1] = ['three' 'four'] |
| 143 | 1 1 'one' 'two'}] |
| 144 | |
| 145 | glob-parse 113 "\"'o*' 'two'\" \"'three' 'four'\"" "two one" \ |
| 146 | [string map [list \r\n \n] \ |
| 147 | {SQL expression: (x GLOB '''o*'' ''two''' OR x GLOB '''three'' ''four''') |
| 148 | pattern[0] = ['o*' 'two'] |
| 149 | pattern[1] = ['three' 'four'] |
| 150 | 0 0 two one}] |
| 151 | |
| 152 | glob-parse 114 o*,two one [string map [list \r\n \n] \ |
| 153 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two') |
| 154 | pattern[0] = [o*] |
| 155 | pattern[1] = [two] |
| 156 | 1 1 one}] |
| 157 | |
| 158 | glob-parse 115 "o*,two three,four" "one two" [string map [list \r\n \n] \ |
| 159 | {SQL expression: (x GLOB 'o*' OR x GLOB 'two' OR x GLOB 'three' OR x GLOB 'four') |
| 160 | pattern[0] = [o*] |
| 161 | pattern[1] = [two] |
| 162 | pattern[2] = [three] |
| 163 | pattern[3] = [four] |
| 164 | 1 1 one two}] |
| 165 | |
| 166 | glob-parse 116 'o*,two' one [string map [list \r\n \n] \ |
| 167 | {SQL expression: (x GLOB 'o*,two') |
| 168 | pattern[0] = [o*,two] |
| 169 | 0 0 one}] |
| 170 | |
| 171 | glob-parse 117 'o*,two' one,two [string map [list \r\n \n] \ |
| 172 | {SQL expression: (x GLOB 'o*,two') |
| 173 | pattern[0] = [o*,two] |
| 174 | 1 1 one,two}] |
| 175 | |
| 176 | glob-parse 118 "'o*,two three,four'" "one two three,four" \ |
| 177 | [string map [list \r\n \n] \ |
| 178 | {SQL expression: (x GLOB 'o*,two three,four') |
| 179 | pattern[0] = [o*,two three,four] |
| 180 | 0 0 one two three,four}] |
| 181 | |
| 182 | glob-parse 119 "'o*,two three,four'" "one,two three,four" \ |
| 183 | [string map [list \r\n \n] \ |
| 184 | {SQL expression: (x GLOB 'o*,two three,four') |
| 185 | pattern[0] = [o*,two three,four] |
| 186 | 1 1 one,two three,four}] |
| 187 | |
| 188 | ############################################################################### |
| 189 | |
| 190 | test_cleanup |
| 191 |
+6
| --- test/settings.test | ||
| +++ test/settings.test | ||
| @@ -26,10 +26,16 @@ | ||
| 26 | 26 | # |
| 27 | 27 | # fossil settings ?PROPERTY? ?VALUE? ?OPTIONS? |
| 28 | 28 | # fossil unset PROPERTY ?OPTIONS? |
| 29 | 29 | # |
| 30 | 30 | # Where the only supported options are "--global" and "--exact". |
| 31 | +# | |
| 32 | +############################################################################### | |
| 33 | +# | |
| 34 | +# NOTE: The [get_all_settings] procedure from test/tester.tcl returns the list | |
| 35 | +# of settings to test and needs to be manually updated when new settings | |
| 36 | +# are added. | |
| 31 | 37 | # |
| 32 | 38 | ############################################################################### |
| 33 | 39 | # |
| 34 | 40 | # NOTE: The [extract_setting_names] procedure extracts the list of setting |
| 35 | 41 | # names from the line-ending normalized output of the "fossil settings" |
| 36 | 42 |
| --- test/settings.test | |
| +++ test/settings.test | |
| @@ -26,10 +26,16 @@ | |
| 26 | # |
| 27 | # fossil settings ?PROPERTY? ?VALUE? ?OPTIONS? |
| 28 | # fossil unset PROPERTY ?OPTIONS? |
| 29 | # |
| 30 | # Where the only supported options are "--global" and "--exact". |
| 31 | # |
| 32 | ############################################################################### |
| 33 | # |
| 34 | # NOTE: The [extract_setting_names] procedure extracts the list of setting |
| 35 | # names from the line-ending normalized output of the "fossil settings" |
| 36 |
| --- test/settings.test | |
| +++ test/settings.test | |
| @@ -26,10 +26,16 @@ | |
| 26 | # |
| 27 | # fossil settings ?PROPERTY? ?VALUE? ?OPTIONS? |
| 28 | # fossil unset PROPERTY ?OPTIONS? |
| 29 | # |
| 30 | # Where the only supported options are "--global" and "--exact". |
| 31 | # |
| 32 | ############################################################################### |
| 33 | # |
| 34 | # NOTE: The [get_all_settings] procedure from test/tester.tcl returns the list |
| 35 | # of settings to test and needs to be manually updated when new settings |
| 36 | # are added. |
| 37 | # |
| 38 | ############################################################################### |
| 39 | # |
| 40 | # NOTE: The [extract_setting_names] procedure extracts the list of setting |
| 41 | # names from the line-ending normalized output of the "fossil settings" |
| 42 |
+2
| --- test/tester.tcl | ||
| +++ test/tester.tcl | ||
| @@ -359,10 +359,12 @@ | ||
| 359 | 359 | proxy \ |
| 360 | 360 | redirect-to-https \ |
| 361 | 361 | relative-paths \ |
| 362 | 362 | repo-cksum \ |
| 363 | 363 | repolist-skin \ |
| 364 | + robot-restrict \ | |
| 365 | + robots-txt \ | |
| 364 | 366 | safe-html \ |
| 365 | 367 | self-pw-reset \ |
| 366 | 368 | self-register \ |
| 367 | 369 | sitemap-extra \ |
| 368 | 370 | ssh-command \ |
| 369 | 371 |
| --- test/tester.tcl | |
| +++ test/tester.tcl | |
| @@ -359,10 +359,12 @@ | |
| 359 | proxy \ |
| 360 | redirect-to-https \ |
| 361 | relative-paths \ |
| 362 | repo-cksum \ |
| 363 | repolist-skin \ |
| 364 | safe-html \ |
| 365 | self-pw-reset \ |
| 366 | self-register \ |
| 367 | sitemap-extra \ |
| 368 | ssh-command \ |
| 369 |
| --- test/tester.tcl | |
| +++ test/tester.tcl | |
| @@ -359,10 +359,12 @@ | |
| 359 | proxy \ |
| 360 | redirect-to-https \ |
| 361 | relative-paths \ |
| 362 | repo-cksum \ |
| 363 | repolist-skin \ |
| 364 | robot-restrict \ |
| 365 | robots-txt \ |
| 366 | safe-html \ |
| 367 | self-pw-reset \ |
| 368 | self-register \ |
| 369 | sitemap-extra \ |
| 370 | ssh-command \ |
| 371 |
+6
-3
| --- www/changes.wiki | ||
| +++ www/changes.wiki | ||
| @@ -13,10 +13,14 @@ | ||
| 13 | 13 | * Add new query parameters to the [/help?cmd=/timeline|/timeline page]: |
| 14 | 14 | d2=, p2=, and dp2=. |
| 15 | 15 | * Add options to the [/help?cmd=tag|fossil tag] command that will list tag values. |
| 16 | 16 | * Add ability to upload unversioned files via the [/help?cmd=/uvlist|/uvlist page]. |
| 17 | 17 | * Add history search to the [/help?cmd=/chat|/chat page]. |
| 18 | + * Add Unix socket support to the [/help?cmd=server|server command]. | |
| 19 | + * On Windows, use the root certificates managed by the operating system | |
| 20 | + (requires OpenSSL 3.2.0 or greater). | |
| 21 | + * Numerous minor fixes and additions. | |
| 18 | 22 | |
| 19 | 23 | |
| 20 | 24 | <h2 id='v2_24'>Changes for version 2.24 (2024-04-23)</h2> |
| 21 | 25 | |
| 22 | 26 | * Apache change work-around → As part of a security fix, the Apache webserver |
| @@ -85,11 +89,11 @@ | ||
| 85 | 89 | * Add ability to "close" forum threads, such that unprivileged users |
| 86 | 90 | may no longer respond to them. Only administrators can close |
| 87 | 91 | threads or respond to them by default, and the |
| 88 | 92 | [/help?cmd=forum-close-policy|forum-close-policy setting] can be |
| 89 | 93 | used to add that capability to moderators. |
| 90 | - * Add the [/help?cmd=all|fossil all whatis] command. | |
| 94 | + * Add the [/help?cmd=all|fossil all whatis] command. | |
| 91 | 95 | * The [/help?cmd=status|fossil status] command and relevant UI pages now |
| 92 | 96 | correctly report files which were both renamed <b>and</b> edited as such. |
| 93 | 97 | * Show default value of settings that have a default in |
| 94 | 98 | [/help?cmd=help|fossil help SETTING] output. |
| 95 | 99 | * On timeline graphs, show closed check-ins using an X in the middle of the |
| @@ -127,11 +131,10 @@ | ||
| 127 | 131 | they work when the "remote" machine is a Mac and the "fossil" |
| 128 | 132 | executable is in the $HOME/bin directory. |
| 129 | 133 | </ul> |
| 130 | 134 | * Update built-in libraries SQLite, ZLib, Pikchr to their latest versions. |
| 131 | 135 | * Documentation enhancements and typo fixes. |
| 132 | - | |
| 133 | 136 | |
| 134 | 137 | |
| 135 | 138 | <h2 id='v2_22'>Changes for version 2.22 (2023-05-31)</h2> |
| 136 | 139 | * Enhancements to the [/help?cmd=/timeline|/timeline webpage]: <ol type="a"> |
| 137 | 140 | <li> Add the ft=TAG query parameter which in combination with d=Y |
| @@ -155,11 +158,11 @@ | ||
| 155 | 158 | frees us from needing to build and install the container as root, |
| 156 | 159 | since it no longer has to create a private <tt>/dev</tt> tree |
| 157 | 160 | inside the jail for Fossil's use. |
| 158 | 161 | * Add support for the trigram tokenizer for FTS5 search to enable |
| 159 | 162 | searching in Chinese. |
| 160 | - * Comment lines (starting with a '#') are now supported inside | |
| 163 | + * Comment lines (starting with a '#') are now supported inside | |
| 161 | 164 | [./settings.wiki#versionable|versioned settings]. |
| 162 | 165 | * Default permissions for anonymous users in new repositories are |
| 163 | 166 | changed to "hz". |
| 164 | 167 | * The [/help?cmd=status|fossil status] command now detects when a |
| 165 | 168 | file used to be a symlink and has been replaced by a regular file. |
| 166 | 169 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -13,10 +13,14 @@ | |
| 13 | * Add new query parameters to the [/help?cmd=/timeline|/timeline page]: |
| 14 | d2=, p2=, and dp2=. |
| 15 | * Add options to the [/help?cmd=tag|fossil tag] command that will list tag values. |
| 16 | * Add ability to upload unversioned files via the [/help?cmd=/uvlist|/uvlist page]. |
| 17 | * Add history search to the [/help?cmd=/chat|/chat page]. |
| 18 | |
| 19 | |
| 20 | <h2 id='v2_24'>Changes for version 2.24 (2024-04-23)</h2> |
| 21 | |
| 22 | * Apache change work-around → As part of a security fix, the Apache webserver |
| @@ -85,11 +89,11 @@ | |
| 85 | * Add ability to "close" forum threads, such that unprivileged users |
| 86 | may no longer respond to them. Only administrators can close |
| 87 | threads or respond to them by default, and the |
| 88 | [/help?cmd=forum-close-policy|forum-close-policy setting] can be |
| 89 | used to add that capability to moderators. |
| 90 | * Add the [/help?cmd=all|fossil all whatis] command. |
| 91 | * The [/help?cmd=status|fossil status] command and relevant UI pages now |
| 92 | correctly report files which were both renamed <b>and</b> edited as such. |
| 93 | * Show default value of settings that have a default in |
| 94 | [/help?cmd=help|fossil help SETTING] output. |
| 95 | * On timeline graphs, show closed check-ins using an X in the middle of the |
| @@ -127,11 +131,10 @@ | |
| 127 | they work when the "remote" machine is a Mac and the "fossil" |
| 128 | executable is in the $HOME/bin directory. |
| 129 | </ul> |
| 130 | * Update built-in libraries SQLite, ZLib, Pikchr to their latest versions. |
| 131 | * Documentation enhancements and typo fixes. |
| 132 | |
| 133 | |
| 134 | |
| 135 | <h2 id='v2_22'>Changes for version 2.22 (2023-05-31)</h2> |
| 136 | * Enhancements to the [/help?cmd=/timeline|/timeline webpage]: <ol type="a"> |
| 137 | <li> Add the ft=TAG query parameter which in combination with d=Y |
| @@ -155,11 +158,11 @@ | |
| 155 | frees us from needing to build and install the container as root, |
| 156 | since it no longer has to create a private <tt>/dev</tt> tree |
| 157 | inside the jail for Fossil's use. |
| 158 | * Add support for the trigram tokenizer for FTS5 search to enable |
| 159 | searching in Chinese. |
| 160 | * Comment lines (starting with a '#') are now supported inside |
| 161 | [./settings.wiki#versionable|versioned settings]. |
| 162 | * Default permissions for anonymous users in new repositories are |
| 163 | changed to "hz". |
| 164 | * The [/help?cmd=status|fossil status] command now detects when a |
| 165 | file used to be a symlink and has been replaced by a regular file. |
| 166 |
| --- www/changes.wiki | |
| +++ www/changes.wiki | |
| @@ -13,10 +13,14 @@ | |
| 13 | * Add new query parameters to the [/help?cmd=/timeline|/timeline page]: |
| 14 | d2=, p2=, and dp2=. |
| 15 | * Add options to the [/help?cmd=tag|fossil tag] command that will list tag values. |
| 16 | * Add ability to upload unversioned files via the [/help?cmd=/uvlist|/uvlist page]. |
| 17 | * Add history search to the [/help?cmd=/chat|/chat page]. |
| 18 | * Add Unix socket support to the [/help?cmd=server|server command]. |
| 19 | * On Windows, use the root certificates managed by the operating system |
| 20 | (requires OpenSSL 3.2.0 or greater). |
| 21 | * Numerous minor fixes and additions. |
| 22 | |
| 23 | |
| 24 | <h2 id='v2_24'>Changes for version 2.24 (2024-04-23)</h2> |
| 25 | |
| 26 | * Apache change work-around → As part of a security fix, the Apache webserver |
| @@ -85,11 +89,11 @@ | |
| 89 | * Add ability to "close" forum threads, such that unprivileged users |
| 90 | may no longer respond to them. Only administrators can close |
| 91 | threads or respond to them by default, and the |
| 92 | [/help?cmd=forum-close-policy|forum-close-policy setting] can be |
| 93 | used to add that capability to moderators. |
| 94 | * Add the [/help?cmd=all|fossil all whatis] command. |
| 95 | * The [/help?cmd=status|fossil status] command and relevant UI pages now |
| 96 | correctly report files which were both renamed <b>and</b> edited as such. |
| 97 | * Show default value of settings that have a default in |
| 98 | [/help?cmd=help|fossil help SETTING] output. |
| 99 | * On timeline graphs, show closed check-ins using an X in the middle of the |
| @@ -127,11 +131,10 @@ | |
| 131 | they work when the "remote" machine is a Mac and the "fossil" |
| 132 | executable is in the $HOME/bin directory. |
| 133 | </ul> |
| 134 | * Update built-in libraries SQLite, ZLib, Pikchr to their latest versions. |
| 135 | * Documentation enhancements and typo fixes. |
| 136 | |
| 137 | |
| 138 | <h2 id='v2_22'>Changes for version 2.22 (2023-05-31)</h2> |
| 139 | * Enhancements to the [/help?cmd=/timeline|/timeline webpage]: <ol type="a"> |
| 140 | <li> Add the ft=TAG query parameter which in combination with d=Y |
| @@ -155,11 +158,11 @@ | |
| 158 | frees us from needing to build and install the container as root, |
| 159 | since it no longer has to create a private <tt>/dev</tt> tree |
| 160 | inside the jail for Fossil's use. |
| 161 | * Add support for the trigram tokenizer for FTS5 search to enable |
| 162 | searching in Chinese. |
| 163 | * Comment lines (starting with a '#') are now supported inside |
| 164 | [./settings.wiki#versionable|versioned settings]. |
| 165 | * Default permissions for anonymous users in new repositories are |
| 166 | changed to "hz". |
| 167 | * The [/help?cmd=status|fossil status] command now detects when a |
| 168 | file used to be a symlink and has been replaced by a regular file. |
| 169 |
+13
-5
| --- www/embeddeddoc.wiki | ||
| +++ www/embeddeddoc.wiki | ||
| @@ -178,17 +178,25 @@ | ||
| 178 | 178 | As with "$ROOT", this substitution only works for Markdown and HTML |
| 179 | 179 | documents. For Wiki documents, you would need to use a relative URL. |
| 180 | 180 | |
| 181 | 181 | <h2 id="th1">2.3 TH1 Documents</h2> |
| 182 | 182 | |
| 183 | -Fossil will substitute the value of [./th1.md | TH1 expressions] within | |
| 184 | -<tt>{</tt> curly braces <tt>}</tt> into the output HTML if you have | |
| 185 | -configured it with the <tt>--with-th1-docs</tt> option, which is | |
| 186 | -disabled by default. | |
| 183 | +Enabling TH1 document support requires the following: | |
| 184 | + | |
| 185 | + * Configure the build with the <code>--with-th1-docs</code> flag. | |
| 186 | + * Enable the <code>th1-docs</code> setting, which is only available | |
| 187 | + after building with <code>--with-th1-docs</code>. | |
| 188 | + * Affected files must have a <code>.th1</code> file extension. | |
| 189 | + * The code to run must be embedded in blocks of | |
| 190 | + <code><th1>...</th1></code>. | |
| 191 | + | |
| 192 | +Fossil will substitute the value of [./th1.md | TH1 expressions] | |
| 193 | +within the <code><th1>...</th1></code> blocks into | |
| 194 | +the output HTML. | |
| 187 | 195 | |
| 188 | 196 | Since TH1 is a full scripting language, this feature essential grants |
| 189 | -the ability to execute code on the server to anyone with check-in | |
| 197 | +the ability to execute code on the server to anyone with check-in | |
| 190 | 198 | privilege for the project. |
| 191 | 199 | This is a security risk that needs to be carefully managed. |
| 192 | 200 | The feature is off by default. |
| 193 | 201 | Administrators should understand and carefully assess the risks |
| 194 | 202 | before enabling the use of TH1 within embedded documentation. |
| 195 | 203 |
| --- www/embeddeddoc.wiki | |
| +++ www/embeddeddoc.wiki | |
| @@ -178,17 +178,25 @@ | |
| 178 | As with "$ROOT", this substitution only works for Markdown and HTML |
| 179 | documents. For Wiki documents, you would need to use a relative URL. |
| 180 | |
| 181 | <h2 id="th1">2.3 TH1 Documents</h2> |
| 182 | |
| 183 | Fossil will substitute the value of [./th1.md | TH1 expressions] within |
| 184 | <tt>{</tt> curly braces <tt>}</tt> into the output HTML if you have |
| 185 | configured it with the <tt>--with-th1-docs</tt> option, which is |
| 186 | disabled by default. |
| 187 | |
| 188 | Since TH1 is a full scripting language, this feature essential grants |
| 189 | the ability to execute code on the server to anyone with check-in |
| 190 | privilege for the project. |
| 191 | This is a security risk that needs to be carefully managed. |
| 192 | The feature is off by default. |
| 193 | Administrators should understand and carefully assess the risks |
| 194 | before enabling the use of TH1 within embedded documentation. |
| 195 |
| --- www/embeddeddoc.wiki | |
| +++ www/embeddeddoc.wiki | |
| @@ -178,17 +178,25 @@ | |
| 178 | As with "$ROOT", this substitution only works for Markdown and HTML |
| 179 | documents. For Wiki documents, you would need to use a relative URL. |
| 180 | |
| 181 | <h2 id="th1">2.3 TH1 Documents</h2> |
| 182 | |
| 183 | Enabling TH1 document support requires the following: |
| 184 | |
| 185 | * Configure the build with the <code>--with-th1-docs</code> flag. |
| 186 | * Enable the <code>th1-docs</code> setting, which is only available |
| 187 | after building with <code>--with-th1-docs</code>. |
| 188 | * Affected files must have a <code>.th1</code> file extension. |
| 189 | * The code to run must be embedded in blocks of |
| 190 | <code><th1>...</th1></code>. |
| 191 | |
| 192 | Fossil will substitute the value of [./th1.md | TH1 expressions] |
| 193 | within the <code><th1>...</th1></code> blocks into |
| 194 | the output HTML. |
| 195 | |
| 196 | Since TH1 is a full scripting language, this feature essential grants |
| 197 | the ability to execute code on the server to anyone with check-in |
| 198 | privilege for the project. |
| 199 | This is a security risk that needs to be carefully managed. |
| 200 | The feature is off by default. |
| 201 | Administrators should understand and carefully assess the risks |
| 202 | before enabling the use of TH1 within embedded documentation. |
| 203 |