Fossil SCM
Integrate ARIA suggestions from Peter Laursen.
Commit
7dd07b2e0120156ec84e8e5f6760aaac6f0da23ffb4dea4eb1bc960a2f14ca1f
Parent
5f66f28806001ef…
11 files changed
+1
-1
+1
-1
+2
-1
+1
-1
+3
-3
+2
-2
+34
-28
+32
-25
+16
-12
+1
-1
+2
-2
+1
-1
| --- skins/default/header.txt | ||
| +++ skins/default/header.txt | ||
| @@ -17,11 +17,11 @@ | ||
| 17 | 17 | html "<a href='$home$url' class='active $cls'>$name</a>\n" |
| 18 | 18 | } else { |
| 19 | 19 | html "<a href='$home$url' class='$cls'>$name</a>\n" |
| 20 | 20 | } |
| 21 | 21 | } |
| 22 | -html "<a id='hbbtn' href='$home/sitemap'>☰</a>" | |
| 22 | +html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" | |
| 23 | 23 | menulink $index_page Home {} |
| 24 | 24 | if {[anycap jor]} { |
| 25 | 25 | menulink /timeline Timeline {} |
| 26 | 26 | } |
| 27 | 27 | if {[hascap oh]} { |
| 28 | 28 |
| --- skins/default/header.txt | |
| +++ skins/default/header.txt | |
| @@ -17,11 +17,11 @@ | |
| 17 | html "<a href='$home$url' class='active $cls'>$name</a>\n" |
| 18 | } else { |
| 19 | html "<a href='$home$url' class='$cls'>$name</a>\n" |
| 20 | } |
| 21 | } |
| 22 | html "<a id='hbbtn' href='$home/sitemap'>☰</a>" |
| 23 | menulink $index_page Home {} |
| 24 | if {[anycap jor]} { |
| 25 | menulink /timeline Timeline {} |
| 26 | } |
| 27 | if {[hascap oh]} { |
| 28 |
| --- skins/default/header.txt | |
| +++ skins/default/header.txt | |
| @@ -17,11 +17,11 @@ | |
| 17 | html "<a href='$home$url' class='active $cls'>$name</a>\n" |
| 18 | } else { |
| 19 | html "<a href='$home$url' class='$cls'>$name</a>\n" |
| 20 | } |
| 21 | } |
| 22 | html "<a id='hbbtn' href='$home/sitemap' aria-label='Site Map'>☰</a>" |
| 23 | menulink $index_page Home {} |
| 24 | if {[anycap jor]} { |
| 25 | menulink /timeline Timeline {} |
| 26 | } |
| 27 | if {[hascap oh]} { |
| 28 |
+1
-1
| --- src/capabilities.c | ||
| +++ src/capabilities.c | ||
| @@ -239,11 +239,11 @@ | ||
| 239 | 239 | char *zOneLiner; /* One-line summary */ |
| 240 | 240 | } aCap[] = { |
| 241 | 241 | { 'a', CAPCLASS_SUPER, 0, |
| 242 | 242 | "Admin", "Create and delete users" }, |
| 243 | 243 | { 'b', CAPCLASS_WIKI|CAPCLASS_TKT, 0, |
| 244 | - "Attach", "Add attchments to wiki or tickets" }, | |
| 244 | + "Attach", "Add attachments to wiki or tickets" }, | |
| 245 | 245 | { 'c', CAPCLASS_TKT, 0, |
| 246 | 246 | "Append-Tkt", "Append to existing tickets" }, |
| 247 | 247 | /* |
| 248 | 248 | ** d unused since fork from CVSTrac; |
| 249 | 249 | ** see https://fossil-scm.org/forum/forumpost/43c78f4bef |
| 250 | 250 |
| --- src/capabilities.c | |
| +++ src/capabilities.c | |
| @@ -239,11 +239,11 @@ | |
| 239 | char *zOneLiner; /* One-line summary */ |
| 240 | } aCap[] = { |
| 241 | { 'a', CAPCLASS_SUPER, 0, |
| 242 | "Admin", "Create and delete users" }, |
| 243 | { 'b', CAPCLASS_WIKI|CAPCLASS_TKT, 0, |
| 244 | "Attach", "Add attchments to wiki or tickets" }, |
| 245 | { 'c', CAPCLASS_TKT, 0, |
| 246 | "Append-Tkt", "Append to existing tickets" }, |
| 247 | /* |
| 248 | ** d unused since fork from CVSTrac; |
| 249 | ** see https://fossil-scm.org/forum/forumpost/43c78f4bef |
| 250 |
| --- src/capabilities.c | |
| +++ src/capabilities.c | |
| @@ -239,11 +239,11 @@ | |
| 239 | char *zOneLiner; /* One-line summary */ |
| 240 | } aCap[] = { |
| 241 | { 'a', CAPCLASS_SUPER, 0, |
| 242 | "Admin", "Create and delete users" }, |
| 243 | { 'b', CAPCLASS_WIKI|CAPCLASS_TKT, 0, |
| 244 | "Attach", "Add attachments to wiki or tickets" }, |
| 245 | { 'c', CAPCLASS_TKT, 0, |
| 246 | "Append-Tkt", "Append to existing tickets" }, |
| 247 | /* |
| 248 | ** d unused since fork from CVSTrac; |
| 249 | ** see https://fossil-scm.org/forum/forumpost/43c78f4bef |
| 250 |
+2
-1
| --- src/captcha.c | ||
| +++ src/captcha.c | ||
| @@ -558,11 +558,12 @@ | ||
| 558 | 558 | /* |
| 559 | 559 | ** Add a "Speak the captcha" button. |
| 560 | 560 | */ |
| 561 | 561 | void captcha_speakit_button(unsigned int uSeed, const char *zMsg){ |
| 562 | 562 | if( zMsg==0 ) zMsg = "Speak the text"; |
| 563 | - @ <input type="button" value="%h(zMsg)" id="speakthetext"> | |
| 563 | + @ <input aria-label="%h(zMsg)" type="button" value="%h(zMsg)" \ | |
| 564 | + @ id="speakthetext"> | |
| 564 | 565 | @ <script nonce="%h(style_nonce())"> |
| 565 | 566 | @ document.getElementById("speakthetext").onclick = function(){ |
| 566 | 567 | @ var audio = window.fossilAudioCaptcha \ |
| 567 | 568 | @ || new Audio("%R/captcha-audio/%u(uSeed)"); |
| 568 | 569 | @ window.fossilAudioCaptcha = audio; |
| 569 | 570 |
| --- src/captcha.c | |
| +++ src/captcha.c | |
| @@ -558,11 +558,12 @@ | |
| 558 | /* |
| 559 | ** Add a "Speak the captcha" button. |
| 560 | */ |
| 561 | void captcha_speakit_button(unsigned int uSeed, const char *zMsg){ |
| 562 | if( zMsg==0 ) zMsg = "Speak the text"; |
| 563 | @ <input type="button" value="%h(zMsg)" id="speakthetext"> |
| 564 | @ <script nonce="%h(style_nonce())"> |
| 565 | @ document.getElementById("speakthetext").onclick = function(){ |
| 566 | @ var audio = window.fossilAudioCaptcha \ |
| 567 | @ || new Audio("%R/captcha-audio/%u(uSeed)"); |
| 568 | @ window.fossilAudioCaptcha = audio; |
| 569 |
| --- src/captcha.c | |
| +++ src/captcha.c | |
| @@ -558,11 +558,12 @@ | |
| 558 | /* |
| 559 | ** Add a "Speak the captcha" button. |
| 560 | */ |
| 561 | void captcha_speakit_button(unsigned int uSeed, const char *zMsg){ |
| 562 | if( zMsg==0 ) zMsg = "Speak the text"; |
| 563 | @ <input aria-label="%h(zMsg)" type="button" value="%h(zMsg)" \ |
| 564 | @ id="speakthetext"> |
| 565 | @ <script nonce="%h(style_nonce())"> |
| 566 | @ document.getElementById("speakthetext").onclick = function(){ |
| 567 | @ var audio = window.fossilAudioCaptcha \ |
| 568 | @ || new Audio("%R/captcha-audio/%u(uSeed)"); |
| 569 | @ window.fossilAudioCaptcha = audio; |
| 570 |
+1
-1
| --- src/doc.c | ||
| +++ src/doc.c | ||
| @@ -810,11 +810,11 @@ | ||
| 810 | 810 | ** WEBPAGE: doc |
| 811 | 811 | ** URL: /uv/FILE |
| 812 | 812 | ** URL: /doc/CHECKIN/FILE |
| 813 | 813 | ** |
| 814 | 814 | ** CHECKIN can be either tag or hash prefix or timestamp identifying a |
| 815 | -** particular check, or the name of a branch (meaning the most recent | |
| 815 | +** particular check-in, or the name of a branch (meaning the most recent | |
| 816 | 816 | ** check-in on that branch) or one of various magic words: |
| 817 | 817 | ** |
| 818 | 818 | ** "tip" means the most recent check-in |
| 819 | 819 | ** |
| 820 | 820 | ** "ckout" means the current check-out, if the server is run from |
| 821 | 821 |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -810,11 +810,11 @@ | |
| 810 | ** WEBPAGE: doc |
| 811 | ** URL: /uv/FILE |
| 812 | ** URL: /doc/CHECKIN/FILE |
| 813 | ** |
| 814 | ** CHECKIN can be either tag or hash prefix or timestamp identifying a |
| 815 | ** particular check, or the name of a branch (meaning the most recent |
| 816 | ** check-in on that branch) or one of various magic words: |
| 817 | ** |
| 818 | ** "tip" means the most recent check-in |
| 819 | ** |
| 820 | ** "ckout" means the current check-out, if the server is run from |
| 821 |
| --- src/doc.c | |
| +++ src/doc.c | |
| @@ -810,11 +810,11 @@ | |
| 810 | ** WEBPAGE: doc |
| 811 | ** URL: /uv/FILE |
| 812 | ** URL: /doc/CHECKIN/FILE |
| 813 | ** |
| 814 | ** CHECKIN can be either tag or hash prefix or timestamp identifying a |
| 815 | ** particular check-in, or the name of a branch (meaning the most recent |
| 816 | ** check-in on that branch) or one of various magic words: |
| 817 | ** |
| 818 | ** "tip" means the most recent check-in |
| 819 | ** |
| 820 | ** "ckout" means the current check-out, if the server is run from |
| 821 |
+3
-3
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -1013,12 +1013,12 @@ | ||
| 1013 | 1013 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1014 | 1014 | @ maxlength="125"><br> |
| 1015 | 1015 | } |
| 1016 | 1016 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1017 | 1017 | mimetype_option_menu(zMimetype); |
| 1018 | - @ <br><textarea name="content" class="wikiedit" cols="80" \ | |
| 1019 | - @ rows="25" wrap="virtual">%h(zContent)</textarea><br> | |
| 1018 | + @ <br><textarea aria-label="Content:" name="content" class="wikiedit" \ | |
| 1019 | + @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea><br> | |
| 1020 | 1020 | } |
| 1021 | 1021 | |
| 1022 | 1022 | /* |
| 1023 | 1023 | ** WEBPAGE: forumnew |
| 1024 | 1024 | ** WEBPAGE: forumedit |
| @@ -1236,11 +1236,11 @@ | ||
| 1236 | 1236 | @ <input type="hidden" name="fpid" value="%h(P("fpid"))"> |
| 1237 | 1237 | @ <input type="hidden" name="nullout" value="1"> |
| 1238 | 1238 | @ <input type="hidden" name="mimetype" value="%h(zMimetype)"> |
| 1239 | 1239 | @ <input type="hidden" name="content" value="%h(zContent)"> |
| 1240 | 1240 | if( zTitle ){ |
| 1241 | - @ <input type="hidden" name="title" value="%h(zTitle)"> | |
| 1241 | + @ <input aria-label="Title" type="hidden" name="title" value="%h(zTitle)"> | |
| 1242 | 1242 | } |
| 1243 | 1243 | }else if( P("edit") ){ |
| 1244 | 1244 | /* Provide an edit to the fpid post */ |
| 1245 | 1245 | zMimetype = P("mimetype"); |
| 1246 | 1246 | zContent = PT("content"); |
| 1247 | 1247 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -1013,12 +1013,12 @@ | |
| 1013 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1014 | @ maxlength="125"><br> |
| 1015 | } |
| 1016 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1017 | mimetype_option_menu(zMimetype); |
| 1018 | @ <br><textarea name="content" class="wikiedit" cols="80" \ |
| 1019 | @ rows="25" wrap="virtual">%h(zContent)</textarea><br> |
| 1020 | } |
| 1021 | |
| 1022 | /* |
| 1023 | ** WEBPAGE: forumnew |
| 1024 | ** WEBPAGE: forumedit |
| @@ -1236,11 +1236,11 @@ | |
| 1236 | @ <input type="hidden" name="fpid" value="%h(P("fpid"))"> |
| 1237 | @ <input type="hidden" name="nullout" value="1"> |
| 1238 | @ <input type="hidden" name="mimetype" value="%h(zMimetype)"> |
| 1239 | @ <input type="hidden" name="content" value="%h(zContent)"> |
| 1240 | if( zTitle ){ |
| 1241 | @ <input type="hidden" name="title" value="%h(zTitle)"> |
| 1242 | } |
| 1243 | }else if( P("edit") ){ |
| 1244 | /* Provide an edit to the fpid post */ |
| 1245 | zMimetype = P("mimetype"); |
| 1246 | zContent = PT("content"); |
| 1247 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -1013,12 +1013,12 @@ | |
| 1013 | @ Title: <input type="input" name="title" value="%h(zTitle)" size="50" |
| 1014 | @ maxlength="125"><br> |
| 1015 | } |
| 1016 | @ %z(href("%R/markup_help"))Markup style</a>: |
| 1017 | mimetype_option_menu(zMimetype); |
| 1018 | @ <br><textarea aria-label="Content:" name="content" class="wikiedit" \ |
| 1019 | @ cols="80" rows="25" wrap="virtual">%h(zContent)</textarea><br> |
| 1020 | } |
| 1021 | |
| 1022 | /* |
| 1023 | ** WEBPAGE: forumnew |
| 1024 | ** WEBPAGE: forumedit |
| @@ -1236,11 +1236,11 @@ | |
| 1236 | @ <input type="hidden" name="fpid" value="%h(P("fpid"))"> |
| 1237 | @ <input type="hidden" name="nullout" value="1"> |
| 1238 | @ <input type="hidden" name="mimetype" value="%h(zMimetype)"> |
| 1239 | @ <input type="hidden" name="content" value="%h(zContent)"> |
| 1240 | if( zTitle ){ |
| 1241 | @ <input aria-label="Title" type="hidden" name="title" value="%h(zTitle)"> |
| 1242 | } |
| 1243 | }else if( P("edit") ){ |
| 1244 | /* Provide an edit to the fpid post */ |
| 1245 | zMimetype = P("mimetype"); |
| 1246 | zContent = PT("content"); |
| 1247 |
+2
-2
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -2769,15 +2769,15 @@ | ||
| 2769 | 2769 | ** |
| 2770 | 2770 | ** Edit a check-in. (Check-ins are immutable and do not really change. |
| 2771 | 2771 | ** This page really creates supplemental tags that affect the display |
| 2772 | 2772 | ** of the check-in.) |
| 2773 | 2773 | ** |
| 2774 | -** Query parmeters: | |
| 2774 | +** Query parameters: | |
| 2775 | 2775 | ** |
| 2776 | 2776 | ** rid=INTEGER Record ID of the check-in to edit (REQUIRED) |
| 2777 | 2777 | ** |
| 2778 | -** POST parameters after pressing "Perview", "Cancel", or "Apply": | |
| 2778 | +** POST parameters after pressing "Preview", "Cancel", or "Apply": | |
| 2779 | 2779 | ** |
| 2780 | 2780 | ** c=TEXT New check-in comment |
| 2781 | 2781 | ** u=TEXT New user name |
| 2782 | 2782 | ** newclr Apply a background color |
| 2783 | 2783 | ** clr=TEXT New background color (only if newclr) |
| 2784 | 2784 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -2769,15 +2769,15 @@ | |
| 2769 | ** |
| 2770 | ** Edit a check-in. (Check-ins are immutable and do not really change. |
| 2771 | ** This page really creates supplemental tags that affect the display |
| 2772 | ** of the check-in.) |
| 2773 | ** |
| 2774 | ** Query parmeters: |
| 2775 | ** |
| 2776 | ** rid=INTEGER Record ID of the check-in to edit (REQUIRED) |
| 2777 | ** |
| 2778 | ** POST parameters after pressing "Perview", "Cancel", or "Apply": |
| 2779 | ** |
| 2780 | ** c=TEXT New check-in comment |
| 2781 | ** u=TEXT New user name |
| 2782 | ** newclr Apply a background color |
| 2783 | ** clr=TEXT New background color (only if newclr) |
| 2784 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -2769,15 +2769,15 @@ | |
| 2769 | ** |
| 2770 | ** Edit a check-in. (Check-ins are immutable and do not really change. |
| 2771 | ** This page really creates supplemental tags that affect the display |
| 2772 | ** of the check-in.) |
| 2773 | ** |
| 2774 | ** Query parameters: |
| 2775 | ** |
| 2776 | ** rid=INTEGER Record ID of the check-in to edit (REQUIRED) |
| 2777 | ** |
| 2778 | ** POST parameters after pressing "Preview", "Cancel", or "Apply": |
| 2779 | ** |
| 2780 | ** c=TEXT New check-in comment |
| 2781 | ** u=TEXT New user name |
| 2782 | ** newclr Apply a background color |
| 2783 | ** clr=TEXT New background color (only if newclr) |
| 2784 |
+34
-28
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -678,20 +678,18 @@ | ||
| 678 | 678 | }else{ |
| 679 | 679 | zAnonPw = 0; |
| 680 | 680 | } |
| 681 | 681 | @ <table class="login_out"> |
| 682 | 682 | @ <tr> |
| 683 | - @ <td class="form_label">User ID:</td> | |
| 684 | - if( anonFlag ){ | |
| 685 | - @ <td><input type="text" id="u" name="u" value="anonymous" size="30"></td> | |
| 686 | - }else{ | |
| 687 | - @ <td><input type="text" id="u" name="u" value="" size="30" /></td> | |
| 688 | - } | |
| 683 | + @ <td class="form_label" id="userlabel1">User ID:</td> | |
| 684 | + @ <td><input type="text" id="u" aria-labelledby="userlabel1" name="u" \ | |
| 685 | + @ size="30" value="%s(anonFlag?"anonymous":"")"></td> | |
| 689 | 686 | @ </tr> |
| 690 | 687 | @ <tr> |
| 691 | - @ <td class="form_label">Password:</td> | |
| 692 | - @ <td><input type="password" id="p" name="p" value="" size="30" />\ | |
| 688 | + @ <td class="form_label" id="pswdlabel">Password:</td> | |
| 689 | + @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ | |
| 690 | + @ name="p" value="" size="30" />\ | |
| 693 | 691 | if( zAnonPw && !noAnon ){ |
| 694 | 692 | captcha_speakit_button(uSeed, "Speak password for \"anonymous\""); |
| 695 | 693 | } |
| 696 | 694 | @ </td> |
| 697 | 695 | @ </tr> |
| @@ -750,16 +748,19 @@ | ||
| 750 | 748 | if( g.perm.Password ){ |
| 751 | 749 | @ <hr> |
| 752 | 750 | @ <p>Change Password for user <b>%h(g.zLogin)</b>:</p> |
| 753 | 751 | form_begin(0, "%R/login"); |
| 754 | 752 | @ <table> |
| 755 | - @ <tr><td class="form_label">Old Password:</td> | |
| 756 | - @ <td><input type="password" name="p" size="30" /></td></tr> | |
| 757 | - @ <tr><td class="form_label">New Password:</td> | |
| 758 | - @ <td><input type="password" name="n1" size="30" /></td></tr> | |
| 759 | - @ <tr><td class="form_label">Repeat New Password:</td> | |
| 760 | - @ <td><input type="password" name="n2" size="30" /></td></tr> | |
| 753 | + @ <tr><td class="form_label" id="oldpw">Old Password:</td> | |
| 754 | + @ <td><input aria-labelledby="oldpw" type="password" name="p" \ | |
| 755 | + @ size="30"/></td></tr> | |
| 756 | + @ <tr><td class="form_label" id="newpw">New Password:</td> | |
| 757 | + @ <td><input aria-labelledby="newpw" type="password" name="n1" \ | |
| 758 | + @ size="30" /></td></tr> | |
| 759 | + @ <tr><td class="form_label" id="reppw">Repeat New Password:</td> | |
| 760 | + @ <td><input aria-labledby="reppw" type="password" name="n2" \ | |
| 761 | + @ size="30" /></td></tr> | |
| 761 | 762 | @ <tr><td></td> |
| 762 | 763 | @ <td><input type="submit" value="Change Password" /></td></tr> |
| 763 | 764 | @ </table> |
| 764 | 765 | @ </form> |
| 765 | 766 | } |
| @@ -1690,57 +1691,62 @@ | ||
| 1690 | 1691 | @ <input type="hidden" name="g" value="%h(P("g"))" /> |
| 1691 | 1692 | } |
| 1692 | 1693 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" /> |
| 1693 | 1694 | @ <table class="login_out"> |
| 1694 | 1695 | @ <tr> |
| 1695 | - @ <td class="form_label" align="right">User ID:</td> | |
| 1696 | - @ <td><input type="text" name="u" value="%h(zUserID)" size="30"></td> | |
| 1696 | + @ <td class="form_label" align="right" id="uid">User ID:</td> | |
| 1697 | + @ <td><input aria-labelledby="uid" type="text" name="u" \ | |
| 1698 | + @ value="%h(zUserID)" size="30"></td> | |
| 1697 | 1699 | @ |
| 1698 | 1700 | if( iErrLine==1 ){ |
| 1699 | 1701 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1700 | 1702 | } |
| 1701 | 1703 | @ <tr> |
| 1702 | - @ <td class="form_label" align="right">Display Name:</td> | |
| 1703 | - @ <td><input type="text" name="dn" value="%h(zDName)" size="30"></td> | |
| 1704 | + @ <td class="form_label" align="right" id="dpyname">Display Name:</td> | |
| 1705 | + @ <td><input aria-labelledby="dpyname" type="text" name="dn" \ | |
| 1706 | + @ value="%h(zDName)" size="30"></td> | |
| 1704 | 1707 | @ </tr> |
| 1705 | 1708 | if( iErrLine==2 ){ |
| 1706 | 1709 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1707 | 1710 | } |
| 1708 | 1711 | @ </tr> |
| 1709 | 1712 | @ <tr> |
| 1710 | - @ <td class="form_label" align="right">Email Address:</td> | |
| 1711 | - @ <td><input type="text" name="ea" value="%h(zEAddr)" size="30"></td> | |
| 1713 | + @ <td class="form_label" align="right" id="emaddr">Email Address:</td> | |
| 1714 | + @ <td><input aria-labelledby="emaddr" type="text" name="ea" \ | |
| 1715 | + @ value="%h(zEAddr)" size="30"></td> | |
| 1712 | 1716 | @ </tr> |
| 1713 | 1717 | if( iErrLine==3 ){ |
| 1714 | 1718 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1715 | 1719 | } |
| 1716 | 1720 | if( canDoAlerts ){ |
| 1717 | 1721 | int a = atoi(PD("alerts","1")); |
| 1718 | 1722 | @ <tr> |
| 1719 | - @ <td class="form_label" align="right">Email Alerts?</td> | |
| 1720 | - @ <td><select size='1' name='alerts'> | |
| 1723 | + @ <td class="form_label" align="right" id="emalrt">Email Alerts?</td> | |
| 1724 | + @ <td><select aria-labelledby="emalrt" size='1' name='alerts'> | |
| 1721 | 1725 | @ <option value="1" %s(a?"selected":"")>Yes</option> |
| 1722 | 1726 | @ <option value="0" %s(!a?"selected":"")>No</option> |
| 1723 | 1727 | @ </select></td></tr> |
| 1724 | 1728 | } |
| 1725 | 1729 | @ <tr> |
| 1726 | - @ <td class="form_label" align="right">Password:</td> | |
| 1727 | - @ <td><input type="password" name="p" value="%h(zPasswd)" size="30"></td> | |
| 1730 | + @ <td class="form_label" align="right" id="pswd">Password:</td> | |
| 1731 | + @ <td><input aria-labelledby="pswd" type="password" name="p" \ | |
| 1732 | + @ value="%h(zPasswd)" size="30"></td> | |
| 1728 | 1733 | @ <tr> |
| 1729 | 1734 | if( iErrLine==4 ){ |
| 1730 | 1735 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1731 | 1736 | } |
| 1732 | 1737 | @ <tr> |
| 1733 | - @ <td class="form_label" align="right">Confirm:</td> | |
| 1734 | - @ <td><input type="password" name="cp" value="%h(zConfirm)" size="30"></td> | |
| 1738 | + @ <td class="form_label" align="right" id="pwcfrm">Confirm:</td> | |
| 1739 | + @ <td><input aria-labelledby="pwcfrm" type="password" name="cp" \ | |
| 1740 | + @ value="%h(zConfirm)" size="30"></td> | |
| 1735 | 1741 | @ </tr> |
| 1736 | 1742 | if( iErrLine==5 ){ |
| 1737 | 1743 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1738 | 1744 | } |
| 1739 | 1745 | @ <tr> |
| 1740 | - @ <td class="form_label" align="right">Captcha:</td> | |
| 1741 | - @ <td><input type="text" name="captcha" \ | |
| 1746 | + @ <td class="form_label" align="right" id="cptcha">Captcha:</td> | |
| 1747 | + @ <td><input type="text" name="captcha" aria-labelledby="cptcha" \ | |
| 1742 | 1748 | @ value="%h(captchaIsCorrect?zDecoded:"")" size="30"> |
| 1743 | 1749 | captcha_speakit_button(uSeed, "Speak the captcha text"); |
| 1744 | 1750 | @ </td> |
| 1745 | 1751 | @ </tr> |
| 1746 | 1752 | if( iErrLine==6 ){ |
| 1747 | 1753 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -678,20 +678,18 @@ | |
| 678 | }else{ |
| 679 | zAnonPw = 0; |
| 680 | } |
| 681 | @ <table class="login_out"> |
| 682 | @ <tr> |
| 683 | @ <td class="form_label">User ID:</td> |
| 684 | if( anonFlag ){ |
| 685 | @ <td><input type="text" id="u" name="u" value="anonymous" size="30"></td> |
| 686 | }else{ |
| 687 | @ <td><input type="text" id="u" name="u" value="" size="30" /></td> |
| 688 | } |
| 689 | @ </tr> |
| 690 | @ <tr> |
| 691 | @ <td class="form_label">Password:</td> |
| 692 | @ <td><input type="password" id="p" name="p" value="" size="30" />\ |
| 693 | if( zAnonPw && !noAnon ){ |
| 694 | captcha_speakit_button(uSeed, "Speak password for \"anonymous\""); |
| 695 | } |
| 696 | @ </td> |
| 697 | @ </tr> |
| @@ -750,16 +748,19 @@ | |
| 750 | if( g.perm.Password ){ |
| 751 | @ <hr> |
| 752 | @ <p>Change Password for user <b>%h(g.zLogin)</b>:</p> |
| 753 | form_begin(0, "%R/login"); |
| 754 | @ <table> |
| 755 | @ <tr><td class="form_label">Old Password:</td> |
| 756 | @ <td><input type="password" name="p" size="30" /></td></tr> |
| 757 | @ <tr><td class="form_label">New Password:</td> |
| 758 | @ <td><input type="password" name="n1" size="30" /></td></tr> |
| 759 | @ <tr><td class="form_label">Repeat New Password:</td> |
| 760 | @ <td><input type="password" name="n2" size="30" /></td></tr> |
| 761 | @ <tr><td></td> |
| 762 | @ <td><input type="submit" value="Change Password" /></td></tr> |
| 763 | @ </table> |
| 764 | @ </form> |
| 765 | } |
| @@ -1690,57 +1691,62 @@ | |
| 1690 | @ <input type="hidden" name="g" value="%h(P("g"))" /> |
| 1691 | } |
| 1692 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" /> |
| 1693 | @ <table class="login_out"> |
| 1694 | @ <tr> |
| 1695 | @ <td class="form_label" align="right">User ID:</td> |
| 1696 | @ <td><input type="text" name="u" value="%h(zUserID)" size="30"></td> |
| 1697 | @ |
| 1698 | if( iErrLine==1 ){ |
| 1699 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1700 | } |
| 1701 | @ <tr> |
| 1702 | @ <td class="form_label" align="right">Display Name:</td> |
| 1703 | @ <td><input type="text" name="dn" value="%h(zDName)" size="30"></td> |
| 1704 | @ </tr> |
| 1705 | if( iErrLine==2 ){ |
| 1706 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1707 | } |
| 1708 | @ </tr> |
| 1709 | @ <tr> |
| 1710 | @ <td class="form_label" align="right">Email Address:</td> |
| 1711 | @ <td><input type="text" name="ea" value="%h(zEAddr)" size="30"></td> |
| 1712 | @ </tr> |
| 1713 | if( iErrLine==3 ){ |
| 1714 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1715 | } |
| 1716 | if( canDoAlerts ){ |
| 1717 | int a = atoi(PD("alerts","1")); |
| 1718 | @ <tr> |
| 1719 | @ <td class="form_label" align="right">Email Alerts?</td> |
| 1720 | @ <td><select size='1' name='alerts'> |
| 1721 | @ <option value="1" %s(a?"selected":"")>Yes</option> |
| 1722 | @ <option value="0" %s(!a?"selected":"")>No</option> |
| 1723 | @ </select></td></tr> |
| 1724 | } |
| 1725 | @ <tr> |
| 1726 | @ <td class="form_label" align="right">Password:</td> |
| 1727 | @ <td><input type="password" name="p" value="%h(zPasswd)" size="30"></td> |
| 1728 | @ <tr> |
| 1729 | if( iErrLine==4 ){ |
| 1730 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1731 | } |
| 1732 | @ <tr> |
| 1733 | @ <td class="form_label" align="right">Confirm:</td> |
| 1734 | @ <td><input type="password" name="cp" value="%h(zConfirm)" size="30"></td> |
| 1735 | @ </tr> |
| 1736 | if( iErrLine==5 ){ |
| 1737 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1738 | } |
| 1739 | @ <tr> |
| 1740 | @ <td class="form_label" align="right">Captcha:</td> |
| 1741 | @ <td><input type="text" name="captcha" \ |
| 1742 | @ value="%h(captchaIsCorrect?zDecoded:"")" size="30"> |
| 1743 | captcha_speakit_button(uSeed, "Speak the captcha text"); |
| 1744 | @ </td> |
| 1745 | @ </tr> |
| 1746 | if( iErrLine==6 ){ |
| 1747 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -678,20 +678,18 @@ | |
| 678 | }else{ |
| 679 | zAnonPw = 0; |
| 680 | } |
| 681 | @ <table class="login_out"> |
| 682 | @ <tr> |
| 683 | @ <td class="form_label" id="userlabel1">User ID:</td> |
| 684 | @ <td><input type="text" id="u" aria-labelledby="userlabel1" name="u" \ |
| 685 | @ size="30" value="%s(anonFlag?"anonymous":"")"></td> |
| 686 | @ </tr> |
| 687 | @ <tr> |
| 688 | @ <td class="form_label" id="pswdlabel">Password:</td> |
| 689 | @ <td><input aria-labelledby="pswdlabel" type="password" id="p" \ |
| 690 | @ name="p" value="" size="30" />\ |
| 691 | if( zAnonPw && !noAnon ){ |
| 692 | captcha_speakit_button(uSeed, "Speak password for \"anonymous\""); |
| 693 | } |
| 694 | @ </td> |
| 695 | @ </tr> |
| @@ -750,16 +748,19 @@ | |
| 748 | if( g.perm.Password ){ |
| 749 | @ <hr> |
| 750 | @ <p>Change Password for user <b>%h(g.zLogin)</b>:</p> |
| 751 | form_begin(0, "%R/login"); |
| 752 | @ <table> |
| 753 | @ <tr><td class="form_label" id="oldpw">Old Password:</td> |
| 754 | @ <td><input aria-labelledby="oldpw" type="password" name="p" \ |
| 755 | @ size="30"/></td></tr> |
| 756 | @ <tr><td class="form_label" id="newpw">New Password:</td> |
| 757 | @ <td><input aria-labelledby="newpw" type="password" name="n1" \ |
| 758 | @ size="30" /></td></tr> |
| 759 | @ <tr><td class="form_label" id="reppw">Repeat New Password:</td> |
| 760 | @ <td><input aria-labledby="reppw" type="password" name="n2" \ |
| 761 | @ size="30" /></td></tr> |
| 762 | @ <tr><td></td> |
| 763 | @ <td><input type="submit" value="Change Password" /></td></tr> |
| 764 | @ </table> |
| 765 | @ </form> |
| 766 | } |
| @@ -1690,57 +1691,62 @@ | |
| 1691 | @ <input type="hidden" name="g" value="%h(P("g"))" /> |
| 1692 | } |
| 1693 | @ <p><input type="hidden" name="captchaseed" value="%u(uSeed)" /> |
| 1694 | @ <table class="login_out"> |
| 1695 | @ <tr> |
| 1696 | @ <td class="form_label" align="right" id="uid">User ID:</td> |
| 1697 | @ <td><input aria-labelledby="uid" type="text" name="u" \ |
| 1698 | @ value="%h(zUserID)" size="30"></td> |
| 1699 | @ |
| 1700 | if( iErrLine==1 ){ |
| 1701 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1702 | } |
| 1703 | @ <tr> |
| 1704 | @ <td class="form_label" align="right" id="dpyname">Display Name:</td> |
| 1705 | @ <td><input aria-labelledby="dpyname" type="text" name="dn" \ |
| 1706 | @ value="%h(zDName)" size="30"></td> |
| 1707 | @ </tr> |
| 1708 | if( iErrLine==2 ){ |
| 1709 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1710 | } |
| 1711 | @ </tr> |
| 1712 | @ <tr> |
| 1713 | @ <td class="form_label" align="right" id="emaddr">Email Address:</td> |
| 1714 | @ <td><input aria-labelledby="emaddr" type="text" name="ea" \ |
| 1715 | @ value="%h(zEAddr)" size="30"></td> |
| 1716 | @ </tr> |
| 1717 | if( iErrLine==3 ){ |
| 1718 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1719 | } |
| 1720 | if( canDoAlerts ){ |
| 1721 | int a = atoi(PD("alerts","1")); |
| 1722 | @ <tr> |
| 1723 | @ <td class="form_label" align="right" id="emalrt">Email Alerts?</td> |
| 1724 | @ <td><select aria-labelledby="emalrt" size='1' name='alerts'> |
| 1725 | @ <option value="1" %s(a?"selected":"")>Yes</option> |
| 1726 | @ <option value="0" %s(!a?"selected":"")>No</option> |
| 1727 | @ </select></td></tr> |
| 1728 | } |
| 1729 | @ <tr> |
| 1730 | @ <td class="form_label" align="right" id="pswd">Password:</td> |
| 1731 | @ <td><input aria-labelledby="pswd" type="password" name="p" \ |
| 1732 | @ value="%h(zPasswd)" size="30"></td> |
| 1733 | @ <tr> |
| 1734 | if( iErrLine==4 ){ |
| 1735 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1736 | } |
| 1737 | @ <tr> |
| 1738 | @ <td class="form_label" align="right" id="pwcfrm">Confirm:</td> |
| 1739 | @ <td><input aria-labelledby="pwcfrm" type="password" name="cp" \ |
| 1740 | @ value="%h(zConfirm)" size="30"></td> |
| 1741 | @ </tr> |
| 1742 | if( iErrLine==5 ){ |
| 1743 | @ <tr><td><td><span class='loginError'>↑ %h(zErr)</span></td></tr> |
| 1744 | } |
| 1745 | @ <tr> |
| 1746 | @ <td class="form_label" align="right" id="cptcha">Captcha:</td> |
| 1747 | @ <td><input type="text" name="captcha" aria-labelledby="cptcha" \ |
| 1748 | @ value="%h(captchaIsCorrect?zDecoded:"")" size="30"> |
| 1749 | captcha_speakit_button(uSeed, "Speak the captcha text"); |
| 1750 | @ </td> |
| 1751 | @ </tr> |
| 1752 | if( iErrLine==6 ){ |
| 1753 |
+32
-25
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -201,16 +201,17 @@ | ||
| 201 | 201 | admin_log("Set option [%q] to [%q].", |
| 202 | 202 | zVar, iQ ? "on" : "off"); |
| 203 | 203 | iVal = iQ; |
| 204 | 204 | } |
| 205 | 205 | } |
| 206 | - @ <label><input type="checkbox" name="%s(zQParm)" | |
| 206 | + @ <label><input type="checkbox" name="%s(zQParm)" \ | |
| 207 | + @ aria-label="%s(zLabel[0]?zLabel:zQParm)" \ | |
| 207 | 208 | if( iVal ){ |
| 208 | - @ checked="checked" | |
| 209 | + @ checked="checked" \ | |
| 209 | 210 | } |
| 210 | 211 | if( disabled ){ |
| 211 | - @ disabled="disabled" | |
| 212 | + @ disabled="disabled" \ | |
| 212 | 213 | } |
| 213 | 214 | @ /> <b>%s(zLabel)</b></label> |
| 214 | 215 | } |
| 215 | 216 | |
| 216 | 217 | /* |
| @@ -232,12 +233,12 @@ | ||
| 232 | 233 | db_set(zVar, zQ, 0); |
| 233 | 234 | admin_log("Set entry_attribute %Q to: %.*s%s", |
| 234 | 235 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 235 | 236 | zVal = zQ; |
| 236 | 237 | } |
| 237 | - @ <input type="text" id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" \ | |
| 238 | - @ size="%d(width)" \ | |
| 238 | + @ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \ | |
| 239 | + @ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \ | |
| 239 | 240 | if( disabled ){ |
| 240 | 241 | @ disabled="disabled" \ |
| 241 | 242 | } |
| 242 | 243 | @ /> <b>%s(zLabel)</b> |
| 243 | 244 | } |
| @@ -263,16 +264,17 @@ | ||
| 263 | 264 | admin_log("Set textarea_attribute %Q to: %.*s%s", |
| 264 | 265 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 265 | 266 | z = zQ; |
| 266 | 267 | } |
| 267 | 268 | if( rows>0 && cols>0 ){ |
| 268 | - @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)" | |
| 269 | + @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)" \ | |
| 270 | + @ aria-label="%h(zLabel[0]?zLabel:zQP)" \ | |
| 269 | 271 | if( disabled ){ |
| 270 | - @ disabled="disabled" | |
| 272 | + @ disabled="disabled" \ | |
| 271 | 273 | } |
| 272 | 274 | @ cols="%d(cols)">%h(z)</textarea> |
| 273 | - if( zLabel && *zLabel ){ | |
| 275 | + if( *zLabel ){ | |
| 274 | 276 | @ <span class="textareaLabel">%s(zLabel)</span> |
| 275 | 277 | } |
| 276 | 278 | } |
| 277 | 279 | return z; |
| 278 | 280 | } |
| @@ -297,11 +299,11 @@ | ||
| 297 | 299 | db_set(zVar, zQ, 0); |
| 298 | 300 | admin_log("Set multiple_choice_attribute %Q to: %.*s%s", |
| 299 | 301 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 300 | 302 | z = zQ; |
| 301 | 303 | } |
| 302 | - @ <select size="1" name="%s(zQP)" id="id%s(zQP)"> | |
| 304 | + @ <select aria-label="%h(zLabel)" size="1" name="%s(zQP)" id="id%s(zQP)"> | |
| 303 | 305 | for(i=0; i<nChoice*2; i+=2){ |
| 304 | 306 | const char *zSel = fossil_strcmp(azChoice[i],z)==0 ? " selected" : ""; |
| 305 | 307 | @ <option value="%h(azChoice[i])"%s(zSel)>%h(azChoice[i+1])</option> |
| 306 | 308 | } |
| 307 | 309 | @ </select> <b>%h(zLabel)</b> |
| @@ -398,11 +400,11 @@ | ||
| 398 | 400 | @ <hr /> |
| 399 | 401 | onoff_attribute("Allow HTTP_AUTHENTICATION authentication", |
| 400 | 402 | "http_authentication_ok", "http_authentication_ok", 0, 0); |
| 401 | 403 | @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment |
| 402 | 404 | @ variable or the "Authentication:" HTTP header to find the username and |
| 403 | - @ password. This is another way of supporting Basic Authenitication. | |
| 405 | + @ password. This is another way of supporting Basic Authentication. | |
| 404 | 406 | @ (Property: "http_authentication_ok") |
| 405 | 407 | @ </p> |
| 406 | 408 | @ |
| 407 | 409 | @ <hr /> |
| 408 | 410 | entry_attribute("Login expiration time", 6, "cookie-expire", "cex", |
| @@ -606,25 +608,30 @@ | ||
| 606 | 608 | @ |
| 607 | 609 | @ <form action="%s(g.zTop)/setup_login_group" method="post"><div> |
| 608 | 610 | login_insert_csrf_secret(); |
| 609 | 611 | @ <blockquote><table border="0"> |
| 610 | 612 | @ |
| 611 | - @ <tr><th align="right">Repository filename in group to join:</th> | |
| 612 | - @ <td width="5"></td><td> | |
| 613 | - @ <input type="text" size="50" value="%h(zRepo)" name="repo"></td></tr> | |
| 614 | - @ | |
| 615 | - @ <tr><th align="right">Login on the above repo:</th> | |
| 616 | - @ <td width="5"></td><td> | |
| 617 | - @ <input type="text" size="20" value="%h(zLogin)" name="login"></td></tr> | |
| 618 | - @ | |
| 619 | - @ <tr><th align="right">Password:</th> | |
| 620 | - @ <td width="5"></td><td> | |
| 621 | - @ <input type="password" size="20" name="pw"></td></tr> | |
| 622 | - @ | |
| 623 | - @ <tr><th align="right">Name of login-group:</th> | |
| 624 | - @ <td width="5"></td><td> | |
| 625 | - @ <input type="text" size="30" value="%h(zNewName)" name="newname"> | |
| 613 | + @ <tr><th align="right" id="rfigtj">Repository filename \ | |
| 614 | + @ in group to join:</th> | |
| 615 | + @ <td width="5"></td><td> | |
| 616 | + @ <input aria-labelledby="rfigtj" type="text" size="50" \ | |
| 617 | + @ value="%h(zRepo)" name="repo"></td></tr> | |
| 618 | + @ | |
| 619 | + @ <tr><th align="right" id="lotar">Login on the above repo:</th> | |
| 620 | + @ <td width="5"></td><td> | |
| 621 | + @ <input aria-labelledby="lotar" type="text" size="20" \ | |
| 622 | + @ value="%h(zLogin)" name="login"></td></tr> | |
| 623 | + @ | |
| 624 | + @ <tr><th align="right" id="lgpw">Password:</th> | |
| 625 | + @ <td width="5"></td><td> | |
| 626 | + @ <input aria-labelledby="lgpw" type="password" size="20" name="pw">\ | |
| 627 | + @ </td></tr> | |
| 628 | + @ | |
| 629 | + @ <tr><th align="right" id="nolg">Name of login-group:</th> | |
| 630 | + @ <td width="5"></td><td> | |
| 631 | + @ <input aria-labelledby="nolg" type="text" size="30" \ | |
| 632 | + @ value="%h(zNewName)" name="newname"> | |
| 626 | 633 | @ (only used if creating a new login-group).</td></tr> |
| 627 | 634 | @ |
| 628 | 635 | @ <tr><td colspan="3" align="center"> |
| 629 | 636 | @ <input type="submit" value="Join" name="join"></td></tr> |
| 630 | 637 | @ </table></blockquote></div></form> |
| 631 | 638 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -201,16 +201,17 @@ | |
| 201 | admin_log("Set option [%q] to [%q].", |
| 202 | zVar, iQ ? "on" : "off"); |
| 203 | iVal = iQ; |
| 204 | } |
| 205 | } |
| 206 | @ <label><input type="checkbox" name="%s(zQParm)" |
| 207 | if( iVal ){ |
| 208 | @ checked="checked" |
| 209 | } |
| 210 | if( disabled ){ |
| 211 | @ disabled="disabled" |
| 212 | } |
| 213 | @ /> <b>%s(zLabel)</b></label> |
| 214 | } |
| 215 | |
| 216 | /* |
| @@ -232,12 +233,12 @@ | |
| 232 | db_set(zVar, zQ, 0); |
| 233 | admin_log("Set entry_attribute %Q to: %.*s%s", |
| 234 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 235 | zVal = zQ; |
| 236 | } |
| 237 | @ <input type="text" id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" \ |
| 238 | @ size="%d(width)" \ |
| 239 | if( disabled ){ |
| 240 | @ disabled="disabled" \ |
| 241 | } |
| 242 | @ /> <b>%s(zLabel)</b> |
| 243 | } |
| @@ -263,16 +264,17 @@ | |
| 263 | admin_log("Set textarea_attribute %Q to: %.*s%s", |
| 264 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 265 | z = zQ; |
| 266 | } |
| 267 | if( rows>0 && cols>0 ){ |
| 268 | @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)" |
| 269 | if( disabled ){ |
| 270 | @ disabled="disabled" |
| 271 | } |
| 272 | @ cols="%d(cols)">%h(z)</textarea> |
| 273 | if( zLabel && *zLabel ){ |
| 274 | @ <span class="textareaLabel">%s(zLabel)</span> |
| 275 | } |
| 276 | } |
| 277 | return z; |
| 278 | } |
| @@ -297,11 +299,11 @@ | |
| 297 | db_set(zVar, zQ, 0); |
| 298 | admin_log("Set multiple_choice_attribute %Q to: %.*s%s", |
| 299 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 300 | z = zQ; |
| 301 | } |
| 302 | @ <select size="1" name="%s(zQP)" id="id%s(zQP)"> |
| 303 | for(i=0; i<nChoice*2; i+=2){ |
| 304 | const char *zSel = fossil_strcmp(azChoice[i],z)==0 ? " selected" : ""; |
| 305 | @ <option value="%h(azChoice[i])"%s(zSel)>%h(azChoice[i+1])</option> |
| 306 | } |
| 307 | @ </select> <b>%h(zLabel)</b> |
| @@ -398,11 +400,11 @@ | |
| 398 | @ <hr /> |
| 399 | onoff_attribute("Allow HTTP_AUTHENTICATION authentication", |
| 400 | "http_authentication_ok", "http_authentication_ok", 0, 0); |
| 401 | @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment |
| 402 | @ variable or the "Authentication:" HTTP header to find the username and |
| 403 | @ password. This is another way of supporting Basic Authenitication. |
| 404 | @ (Property: "http_authentication_ok") |
| 405 | @ </p> |
| 406 | @ |
| 407 | @ <hr /> |
| 408 | entry_attribute("Login expiration time", 6, "cookie-expire", "cex", |
| @@ -606,25 +608,30 @@ | |
| 606 | @ |
| 607 | @ <form action="%s(g.zTop)/setup_login_group" method="post"><div> |
| 608 | login_insert_csrf_secret(); |
| 609 | @ <blockquote><table border="0"> |
| 610 | @ |
| 611 | @ <tr><th align="right">Repository filename in group to join:</th> |
| 612 | @ <td width="5"></td><td> |
| 613 | @ <input type="text" size="50" value="%h(zRepo)" name="repo"></td></tr> |
| 614 | @ |
| 615 | @ <tr><th align="right">Login on the above repo:</th> |
| 616 | @ <td width="5"></td><td> |
| 617 | @ <input type="text" size="20" value="%h(zLogin)" name="login"></td></tr> |
| 618 | @ |
| 619 | @ <tr><th align="right">Password:</th> |
| 620 | @ <td width="5"></td><td> |
| 621 | @ <input type="password" size="20" name="pw"></td></tr> |
| 622 | @ |
| 623 | @ <tr><th align="right">Name of login-group:</th> |
| 624 | @ <td width="5"></td><td> |
| 625 | @ <input type="text" size="30" value="%h(zNewName)" name="newname"> |
| 626 | @ (only used if creating a new login-group).</td></tr> |
| 627 | @ |
| 628 | @ <tr><td colspan="3" align="center"> |
| 629 | @ <input type="submit" value="Join" name="join"></td></tr> |
| 630 | @ </table></blockquote></div></form> |
| 631 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -201,16 +201,17 @@ | |
| 201 | admin_log("Set option [%q] to [%q].", |
| 202 | zVar, iQ ? "on" : "off"); |
| 203 | iVal = iQ; |
| 204 | } |
| 205 | } |
| 206 | @ <label><input type="checkbox" name="%s(zQParm)" \ |
| 207 | @ aria-label="%s(zLabel[0]?zLabel:zQParm)" \ |
| 208 | if( iVal ){ |
| 209 | @ checked="checked" \ |
| 210 | } |
| 211 | if( disabled ){ |
| 212 | @ disabled="disabled" \ |
| 213 | } |
| 214 | @ /> <b>%s(zLabel)</b></label> |
| 215 | } |
| 216 | |
| 217 | /* |
| @@ -232,12 +233,12 @@ | |
| 233 | db_set(zVar, zQ, 0); |
| 234 | admin_log("Set entry_attribute %Q to: %.*s%s", |
| 235 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 236 | zVal = zQ; |
| 237 | } |
| 238 | @ <input aria-label="%h(zLabel[0]?zLabel:zQParm)" type="text" \ |
| 239 | @ id="%s(zQParm)" name="%s(zQParm)" value="%h(zVal)" size="%d(width)" \ |
| 240 | if( disabled ){ |
| 241 | @ disabled="disabled" \ |
| 242 | } |
| 243 | @ /> <b>%s(zLabel)</b> |
| 244 | } |
| @@ -263,16 +264,17 @@ | |
| 264 | admin_log("Set textarea_attribute %Q to: %.*s%s", |
| 265 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 266 | z = zQ; |
| 267 | } |
| 268 | if( rows>0 && cols>0 ){ |
| 269 | @ <textarea id="id%s(zQP)" name="%s(zQP)" rows="%d(rows)" \ |
| 270 | @ aria-label="%h(zLabel[0]?zLabel:zQP)" \ |
| 271 | if( disabled ){ |
| 272 | @ disabled="disabled" \ |
| 273 | } |
| 274 | @ cols="%d(cols)">%h(z)</textarea> |
| 275 | if( *zLabel ){ |
| 276 | @ <span class="textareaLabel">%s(zLabel)</span> |
| 277 | } |
| 278 | } |
| 279 | return z; |
| 280 | } |
| @@ -297,11 +299,11 @@ | |
| 299 | db_set(zVar, zQ, 0); |
| 300 | admin_log("Set multiple_choice_attribute %Q to: %.*s%s", |
| 301 | zVar, 20, zQ, (nZQ>20 ? "..." : "")); |
| 302 | z = zQ; |
| 303 | } |
| 304 | @ <select aria-label="%h(zLabel)" size="1" name="%s(zQP)" id="id%s(zQP)"> |
| 305 | for(i=0; i<nChoice*2; i+=2){ |
| 306 | const char *zSel = fossil_strcmp(azChoice[i],z)==0 ? " selected" : ""; |
| 307 | @ <option value="%h(azChoice[i])"%s(zSel)>%h(azChoice[i+1])</option> |
| 308 | } |
| 309 | @ </select> <b>%h(zLabel)</b> |
| @@ -398,11 +400,11 @@ | |
| 400 | @ <hr /> |
| 401 | onoff_attribute("Allow HTTP_AUTHENTICATION authentication", |
| 402 | "http_authentication_ok", "http_authentication_ok", 0, 0); |
| 403 | @ <p>When enabled, allow the use of the HTTP_AUTHENTICATION environment |
| 404 | @ variable or the "Authentication:" HTTP header to find the username and |
| 405 | @ password. This is another way of supporting Basic Authentication. |
| 406 | @ (Property: "http_authentication_ok") |
| 407 | @ </p> |
| 408 | @ |
| 409 | @ <hr /> |
| 410 | entry_attribute("Login expiration time", 6, "cookie-expire", "cex", |
| @@ -606,25 +608,30 @@ | |
| 608 | @ |
| 609 | @ <form action="%s(g.zTop)/setup_login_group" method="post"><div> |
| 610 | login_insert_csrf_secret(); |
| 611 | @ <blockquote><table border="0"> |
| 612 | @ |
| 613 | @ <tr><th align="right" id="rfigtj">Repository filename \ |
| 614 | @ in group to join:</th> |
| 615 | @ <td width="5"></td><td> |
| 616 | @ <input aria-labelledby="rfigtj" type="text" size="50" \ |
| 617 | @ value="%h(zRepo)" name="repo"></td></tr> |
| 618 | @ |
| 619 | @ <tr><th align="right" id="lotar">Login on the above repo:</th> |
| 620 | @ <td width="5"></td><td> |
| 621 | @ <input aria-labelledby="lotar" type="text" size="20" \ |
| 622 | @ value="%h(zLogin)" name="login"></td></tr> |
| 623 | @ |
| 624 | @ <tr><th align="right" id="lgpw">Password:</th> |
| 625 | @ <td width="5"></td><td> |
| 626 | @ <input aria-labelledby="lgpw" type="password" size="20" name="pw">\ |
| 627 | @ </td></tr> |
| 628 | @ |
| 629 | @ <tr><th align="right" id="nolg">Name of login-group:</th> |
| 630 | @ <td width="5"></td><td> |
| 631 | @ <input aria-labelledby="nolg" type="text" size="30" \ |
| 632 | @ value="%h(zNewName)" name="newname"> |
| 633 | @ (only used if creating a new login-group).</td></tr> |
| 634 | @ |
| 635 | @ <tr><td colspan="3" align="center"> |
| 636 | @ <input type="submit" value="Join" name="join"></td></tr> |
| 637 | @ </table></blockquote></div></form> |
| 638 |
+16
-12
| --- src/setupuser.c | ||
| +++ src/setupuser.c | ||
| @@ -534,24 +534,27 @@ | ||
| 534 | 534 | @ <input type="hidden" name="pw" value="*"> |
| 535 | 535 | } |
| 536 | 536 | @ <input type="hidden" name="referer" value="%h(cgi_referer("setup_ulist"))"> |
| 537 | 537 | @ <table width="100%%"> |
| 538 | 538 | @ <tr> |
| 539 | - @ <td class="usetupEditLabel">User ID:</td> | |
| 539 | + @ <td class="usetupEditLabel" id="suuid">User ID:</td> | |
| 540 | 540 | if( uid ){ |
| 541 | - @ <td>%d(uid) <input type="hidden" name="id" value="%d(uid)" />\ | |
| 541 | + @ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \ | |
| 542 | + @ name="id" value="%d(uid)"/>\ | |
| 542 | 543 | @ </td> |
| 543 | 544 | }else{ |
| 544 | - @ <td>(new user)<input type="hidden" name="id" value="0" /></td> | |
| 545 | + @ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \ | |
| 546 | + @ value="0" /></td> | |
| 545 | 547 | } |
| 546 | 548 | @ </tr> |
| 547 | 549 | @ <tr> |
| 548 | - @ <td class="usetupEditLabel">Login:</td> | |
| 550 | + @ <td class="usetupEditLabel" id="sulgn">Login:</td> | |
| 549 | 551 | if( login_is_special(zLogin) ){ |
| 550 | 552 | @ <td><b>%h(zLogin)</b></td> |
| 551 | 553 | }else{ |
| 552 | - @ <td><input type="text" name="login" value="%h(zLogin)" />\ | |
| 554 | + @ <td><input aria-labelledby="sulgn" type="text" name="login" \ | |
| 555 | + @ value="%h(zLogin)" /> | |
| 553 | 556 | if( alert_tables_exist() ){ |
| 554 | 557 | int sid; |
| 555 | 558 | sid = db_int(0, "SELECT subscriberId FROM subscriber" |
| 556 | 559 | " WHERE suname=%Q", zLogin); |
| 557 | 560 | if( sid>0 ){ |
| @@ -559,12 +562,13 @@ | ||
| 559 | 562 | @ (subscription info for %h(zLogin))</a>\ |
| 560 | 563 | } |
| 561 | 564 | } |
| 562 | 565 | @ </td></tr> |
| 563 | 566 | @ <tr> |
| 564 | - @ <td class="usetupEditLabel">Contact Info:</td> | |
| 565 | - @ <td><textarea name="info" cols="40" rows="2">%h(zInfo)</textarea></td> | |
| 567 | + @ <td class="usetupEditLabel" id="sucnfo">Contact Info:</td> | |
| 568 | + @ <td><textarea aria-labelledby="sucnfo" name="info" cols="40" \ | |
| 569 | + @ rows="2">%h(zInfo)</textarea></td> | |
| 566 | 570 | } |
| 567 | 571 | @ </tr> |
| 568 | 572 | @ <tr> |
| 569 | 573 | @ <td class="usetupEditLabel">Capabilities:</td> |
| 570 | 574 | @ <td width="100%%"> |
| @@ -653,19 +657,19 @@ | ||
| 653 | 657 | @ <a href="%R/setup_ucap_list">(key)</a> |
| 654 | 658 | @ </td> |
| 655 | 659 | @ </tr> |
| 656 | 660 | if( !login_is_special(zLogin) ){ |
| 657 | 661 | @ <tr> |
| 658 | - @ <td align="right">Password:</td> | |
| 662 | + @ <td align="right" id="supw">Password:</td> | |
| 659 | 663 | if( zPw[0] ){ |
| 660 | 664 | /* Obscure the password for all users */ |
| 661 | - @ <td><input type="password" autocomplete="off" name="pw"\ | |
| 662 | - @ value="**********" /></td> | |
| 665 | + @ <td><input aria-labelledby="supw" type="password" autocomplete="off" \ | |
| 666 | + @ name="pw" value="**********" /></td> | |
| 663 | 667 | }else{ |
| 664 | 668 | /* Show an empty password as an empty input field */ |
| 665 | - @ <td><input type="password" autocomplete="off" name="pw"\ | |
| 666 | - @ value="" /></td> | |
| 669 | + @ <td><input aria-labelledby="supw" type="password" name="pw" \ | |
| 670 | + @ autocomplete="off" value="" /></td> | |
| 667 | 671 | } |
| 668 | 672 | @ </tr> |
| 669 | 673 | } |
| 670 | 674 | zGroup = login_group_name(); |
| 671 | 675 | if( zGroup ){ |
| 672 | 676 |
| --- src/setupuser.c | |
| +++ src/setupuser.c | |
| @@ -534,24 +534,27 @@ | |
| 534 | @ <input type="hidden" name="pw" value="*"> |
| 535 | } |
| 536 | @ <input type="hidden" name="referer" value="%h(cgi_referer("setup_ulist"))"> |
| 537 | @ <table width="100%%"> |
| 538 | @ <tr> |
| 539 | @ <td class="usetupEditLabel">User ID:</td> |
| 540 | if( uid ){ |
| 541 | @ <td>%d(uid) <input type="hidden" name="id" value="%d(uid)" />\ |
| 542 | @ </td> |
| 543 | }else{ |
| 544 | @ <td>(new user)<input type="hidden" name="id" value="0" /></td> |
| 545 | } |
| 546 | @ </tr> |
| 547 | @ <tr> |
| 548 | @ <td class="usetupEditLabel">Login:</td> |
| 549 | if( login_is_special(zLogin) ){ |
| 550 | @ <td><b>%h(zLogin)</b></td> |
| 551 | }else{ |
| 552 | @ <td><input type="text" name="login" value="%h(zLogin)" />\ |
| 553 | if( alert_tables_exist() ){ |
| 554 | int sid; |
| 555 | sid = db_int(0, "SELECT subscriberId FROM subscriber" |
| 556 | " WHERE suname=%Q", zLogin); |
| 557 | if( sid>0 ){ |
| @@ -559,12 +562,13 @@ | |
| 559 | @ (subscription info for %h(zLogin))</a>\ |
| 560 | } |
| 561 | } |
| 562 | @ </td></tr> |
| 563 | @ <tr> |
| 564 | @ <td class="usetupEditLabel">Contact Info:</td> |
| 565 | @ <td><textarea name="info" cols="40" rows="2">%h(zInfo)</textarea></td> |
| 566 | } |
| 567 | @ </tr> |
| 568 | @ <tr> |
| 569 | @ <td class="usetupEditLabel">Capabilities:</td> |
| 570 | @ <td width="100%%"> |
| @@ -653,19 +657,19 @@ | |
| 653 | @ <a href="%R/setup_ucap_list">(key)</a> |
| 654 | @ </td> |
| 655 | @ </tr> |
| 656 | if( !login_is_special(zLogin) ){ |
| 657 | @ <tr> |
| 658 | @ <td align="right">Password:</td> |
| 659 | if( zPw[0] ){ |
| 660 | /* Obscure the password for all users */ |
| 661 | @ <td><input type="password" autocomplete="off" name="pw"\ |
| 662 | @ value="**********" /></td> |
| 663 | }else{ |
| 664 | /* Show an empty password as an empty input field */ |
| 665 | @ <td><input type="password" autocomplete="off" name="pw"\ |
| 666 | @ value="" /></td> |
| 667 | } |
| 668 | @ </tr> |
| 669 | } |
| 670 | zGroup = login_group_name(); |
| 671 | if( zGroup ){ |
| 672 |
| --- src/setupuser.c | |
| +++ src/setupuser.c | |
| @@ -534,24 +534,27 @@ | |
| 534 | @ <input type="hidden" name="pw" value="*"> |
| 535 | } |
| 536 | @ <input type="hidden" name="referer" value="%h(cgi_referer("setup_ulist"))"> |
| 537 | @ <table width="100%%"> |
| 538 | @ <tr> |
| 539 | @ <td class="usetupEditLabel" id="suuid">User ID:</td> |
| 540 | if( uid ){ |
| 541 | @ <td>%d(uid) <input aria-labelledby="suuid" type="hidden" \ |
| 542 | @ name="id" value="%d(uid)"/>\ |
| 543 | @ </td> |
| 544 | }else{ |
| 545 | @ <td>(new user)<input aria-labelledby="suuid" type="hidden" name="id" \ |
| 546 | @ value="0" /></td> |
| 547 | } |
| 548 | @ </tr> |
| 549 | @ <tr> |
| 550 | @ <td class="usetupEditLabel" id="sulgn">Login:</td> |
| 551 | if( login_is_special(zLogin) ){ |
| 552 | @ <td><b>%h(zLogin)</b></td> |
| 553 | }else{ |
| 554 | @ <td><input aria-labelledby="sulgn" type="text" name="login" \ |
| 555 | @ value="%h(zLogin)" /> |
| 556 | if( alert_tables_exist() ){ |
| 557 | int sid; |
| 558 | sid = db_int(0, "SELECT subscriberId FROM subscriber" |
| 559 | " WHERE suname=%Q", zLogin); |
| 560 | if( sid>0 ){ |
| @@ -559,12 +562,13 @@ | |
| 562 | @ (subscription info for %h(zLogin))</a>\ |
| 563 | } |
| 564 | } |
| 565 | @ </td></tr> |
| 566 | @ <tr> |
| 567 | @ <td class="usetupEditLabel" id="sucnfo">Contact Info:</td> |
| 568 | @ <td><textarea aria-labelledby="sucnfo" name="info" cols="40" \ |
| 569 | @ rows="2">%h(zInfo)</textarea></td> |
| 570 | } |
| 571 | @ </tr> |
| 572 | @ <tr> |
| 573 | @ <td class="usetupEditLabel">Capabilities:</td> |
| 574 | @ <td width="100%%"> |
| @@ -653,19 +657,19 @@ | |
| 657 | @ <a href="%R/setup_ucap_list">(key)</a> |
| 658 | @ </td> |
| 659 | @ </tr> |
| 660 | if( !login_is_special(zLogin) ){ |
| 661 | @ <tr> |
| 662 | @ <td align="right" id="supw">Password:</td> |
| 663 | if( zPw[0] ){ |
| 664 | /* Obscure the password for all users */ |
| 665 | @ <td><input aria-labelledby="supw" type="password" autocomplete="off" \ |
| 666 | @ name="pw" value="**********" /></td> |
| 667 | }else{ |
| 668 | /* Show an empty password as an empty input field */ |
| 669 | @ <td><input aria-labelledby="supw" type="password" name="pw" \ |
| 670 | @ autocomplete="off" value="" /></td> |
| 671 | } |
| 672 | @ </tr> |
| 673 | } |
| 674 | zGroup = login_group_name(); |
| 675 | if( zGroup ){ |
| 676 |
+1
-1
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -1117,11 +1117,11 @@ | ||
| 1117 | 1117 | if( !g.perm.Admin ){ |
| 1118 | 1118 | @ <p>Only administrators are allowed to publish draft skins. Contact |
| 1119 | 1119 | @ an administrator to get this "draft%d(iSkin)" skin published.</p> |
| 1120 | 1120 | }else{ |
| 1121 | 1121 | @ <p>When the draft%d(iSkin) skin is ready for production use, |
| 1122 | - @ make it the default scan by clicking the acknowledgements and | |
| 1122 | + @ make it the default skin by clicking the acknowledgements and | |
| 1123 | 1123 | @ pressing the button below:</p> |
| 1124 | 1124 | @ |
| 1125 | 1125 | @ <form method='POST' action='%R/setup_skin#step7'> |
| 1126 | 1126 | @ <p class='skinInput'> |
| 1127 | 1127 | @ <input type='hidden' name='sk' value='%d(iSkin)'> |
| 1128 | 1128 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -1117,11 +1117,11 @@ | |
| 1117 | if( !g.perm.Admin ){ |
| 1118 | @ <p>Only administrators are allowed to publish draft skins. Contact |
| 1119 | @ an administrator to get this "draft%d(iSkin)" skin published.</p> |
| 1120 | }else{ |
| 1121 | @ <p>When the draft%d(iSkin) skin is ready for production use, |
| 1122 | @ make it the default scan by clicking the acknowledgements and |
| 1123 | @ pressing the button below:</p> |
| 1124 | @ |
| 1125 | @ <form method='POST' action='%R/setup_skin#step7'> |
| 1126 | @ <p class='skinInput'> |
| 1127 | @ <input type='hidden' name='sk' value='%d(iSkin)'> |
| 1128 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -1117,11 +1117,11 @@ | |
| 1117 | if( !g.perm.Admin ){ |
| 1118 | @ <p>Only administrators are allowed to publish draft skins. Contact |
| 1119 | @ an administrator to get this "draft%d(iSkin)" skin published.</p> |
| 1120 | }else{ |
| 1121 | @ <p>When the draft%d(iSkin) skin is ready for production use, |
| 1122 | @ make it the default skin by clicking the acknowledgements and |
| 1123 | @ pressing the button below:</p> |
| 1124 | @ |
| 1125 | @ <form method='POST' action='%R/setup_skin#step7'> |
| 1126 | @ <p class='skinInput'> |
| 1127 | @ <input type='hidden' name='sk' value='%d(iSkin)'> |
| 1128 |
+2
-2
| --- www/cgi.wiki | ||
| +++ www/cgi.wiki | ||
| @@ -14,12 +14,12 @@ | ||
| 14 | 14 | script]. CGI is the technique that the three |
| 15 | 15 | [./selfhost.wiki|self-hosting Fossil repositories] all use. |
| 16 | 16 | |
| 17 | 17 | Setting up a Fossil server using CGI is mostly about writing a short |
| 18 | 18 | script (usually just 2 lines line) in the cgi-bin folder of an ordinary |
| 19 | -web-browser. But there are a lot of extra options that can be added | |
| 20 | -to this script, to customize the configuration. This article descripts | |
| 19 | +web-server. But there are a lot of extra options that can be added | |
| 20 | +to this script, to customize the configuration. This article describes | |
| 21 | 21 | those options. |
| 22 | 22 | |
| 23 | 23 | <h1>CGI Script Options</h1> |
| 24 | 24 | |
| 25 | 25 | The CGI script used to launch a Fossil server will usually look something |
| 26 | 26 |
| --- www/cgi.wiki | |
| +++ www/cgi.wiki | |
| @@ -14,12 +14,12 @@ | |
| 14 | script]. CGI is the technique that the three |
| 15 | [./selfhost.wiki|self-hosting Fossil repositories] all use. |
| 16 | |
| 17 | Setting up a Fossil server using CGI is mostly about writing a short |
| 18 | script (usually just 2 lines line) in the cgi-bin folder of an ordinary |
| 19 | web-browser. But there are a lot of extra options that can be added |
| 20 | to this script, to customize the configuration. This article descripts |
| 21 | those options. |
| 22 | |
| 23 | <h1>CGI Script Options</h1> |
| 24 | |
| 25 | The CGI script used to launch a Fossil server will usually look something |
| 26 |
| --- www/cgi.wiki | |
| +++ www/cgi.wiki | |
| @@ -14,12 +14,12 @@ | |
| 14 | script]. CGI is the technique that the three |
| 15 | [./selfhost.wiki|self-hosting Fossil repositories] all use. |
| 16 | |
| 17 | Setting up a Fossil server using CGI is mostly about writing a short |
| 18 | script (usually just 2 lines line) in the cgi-bin folder of an ordinary |
| 19 | web-server. But there are a lot of extra options that can be added |
| 20 | to this script, to customize the configuration. This article describes |
| 21 | those options. |
| 22 | |
| 23 | <h1>CGI Script Options</h1> |
| 24 | |
| 25 | The CGI script used to launch a Fossil server will usually look something |
| 26 |