Fossil SCM
Attempts at beautification: (1) Simplify names of some links/buttons in diff pages. (2) Omit the "Hide Diffs" links, as those are now redundant. (3) Remove the accordion menu from the /ckout page.
Commit
4d2d62d017b08ce1eb9f47bb07d56d07730a8ecaa7922e8f81ece129d94ae881
Parent
7cf712af979d10a…
2 files changed
+2
-2
+18
-22
+2
-2
| --- src/fossil.diff.js | ||
| +++ src/fossil.diff.js | ||
| @@ -50,11 +50,11 @@ | ||
| 50 | 50 | has a single file to show (and also a different DOM layout). */ |
| 51 | 51 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 52 | 52 | } |
| 53 | 53 | const icm = allToggles.length>1 ? window.fossil.page.diffControlContainer : 0; |
| 54 | 54 | if(icm) { |
| 55 | - const btnAll = D.addClass(D.a("#", "Toggle all diffs"), "button"); | |
| 55 | + const btnAll = D.addClass(D.a("#", "Show/Hide"), "button"); | |
| 56 | 56 | D.append( icm, btnAll ); |
| 57 | 57 | btnAll.addEventListener('click', function(ev){ |
| 58 | 58 | ev.preventDefault(); |
| 59 | 59 | ev.stopPropagation(); |
| 60 | 60 | /* Figure out whether we want to show all or hide all: if any diffs are |
| @@ -704,11 +704,11 @@ | ||
| 704 | 704 | persists across page loads and different apps. */ |
| 705 | 705 | cbSync = D.checkbox(keySbsScroll, F.storage.getBool(keySbsScroll,true)); |
| 706 | 706 | D.append(eToggleParent, D.append( |
| 707 | 707 | D.addClass(D.create('span'), 'input-with-label'), |
| 708 | 708 | D.append(D.create('label'), |
| 709 | - cbSync, "Sync side-by-side scrolling") | |
| 709 | + cbSync, "Scroll Sync") | |
| 710 | 710 | )); |
| 711 | 711 | cbSync.addEventListener('change', function(e){ |
| 712 | 712 | F.storage.set(keySbsScroll, e.target.checked); |
| 713 | 713 | }); |
| 714 | 714 | } |
| 715 | 715 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -50,11 +50,11 @@ | |
| 50 | has a single file to show (and also a different DOM layout). */ |
| 51 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 52 | } |
| 53 | const icm = allToggles.length>1 ? window.fossil.page.diffControlContainer : 0; |
| 54 | if(icm) { |
| 55 | const btnAll = D.addClass(D.a("#", "Toggle all diffs"), "button"); |
| 56 | D.append( icm, btnAll ); |
| 57 | btnAll.addEventListener('click', function(ev){ |
| 58 | ev.preventDefault(); |
| 59 | ev.stopPropagation(); |
| 60 | /* Figure out whether we want to show all or hide all: if any diffs are |
| @@ -704,11 +704,11 @@ | |
| 704 | persists across page loads and different apps. */ |
| 705 | cbSync = D.checkbox(keySbsScroll, F.storage.getBool(keySbsScroll,true)); |
| 706 | D.append(eToggleParent, D.append( |
| 707 | D.addClass(D.create('span'), 'input-with-label'), |
| 708 | D.append(D.create('label'), |
| 709 | cbSync, "Sync side-by-side scrolling") |
| 710 | )); |
| 711 | cbSync.addEventListener('change', function(e){ |
| 712 | F.storage.set(keySbsScroll, e.target.checked); |
| 713 | }); |
| 714 | } |
| 715 |
| --- src/fossil.diff.js | |
| +++ src/fossil.diff.js | |
| @@ -50,11 +50,11 @@ | |
| 50 | has a single file to show (and also a different DOM layout). */ |
| 51 | document.querySelectorAll('table.diff').forEach(addToggle); |
| 52 | } |
| 53 | const icm = allToggles.length>1 ? window.fossil.page.diffControlContainer : 0; |
| 54 | if(icm) { |
| 55 | const btnAll = D.addClass(D.a("#", "Show/Hide"), "button"); |
| 56 | D.append( icm, btnAll ); |
| 57 | btnAll.addEventListener('click', function(ev){ |
| 58 | ev.preventDefault(); |
| 59 | ev.stopPropagation(); |
| 60 | /* Figure out whether we want to show all or hide all: if any diffs are |
| @@ -704,11 +704,11 @@ | |
| 704 | persists across page loads and different apps. */ |
| 705 | cbSync = D.checkbox(keySbsScroll, F.storage.getBool(keySbsScroll,true)); |
| 706 | D.append(eToggleParent, D.append( |
| 707 | D.addClass(D.create('span'), 'input-with-label'), |
| 708 | D.append(D.create('label'), |
| 709 | cbSync, "Scroll Sync") |
| 710 | )); |
| 711 | cbSync.addEventListener('change', function(e){ |
| 712 | F.storage.set(keySbsScroll, e.target.checked); |
| 713 | }); |
| 714 | } |
| 715 |
+18
-22
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -623,10 +623,11 @@ | ||
| 623 | 623 | char *zCwd; |
| 624 | 624 | int diffType; /* 0: no diff, 1: unified, 2: side-by-side */ |
| 625 | 625 | DiffConfig DCfg,*pCfg; /* Diff details */ |
| 626 | 626 | const char *zHome; /* Home directory */ |
| 627 | 627 | const char *zW; /* The "w" query parameter */ |
| 628 | + int nChng; /* Number of changes */ | |
| 628 | 629 | Stmt q; |
| 629 | 630 | |
| 630 | 631 | if( !db_open_local(0) || !cgi_is_loopback(g.zIpAddr) ){ |
| 631 | 632 | cgi_redirect("%R/home"); |
| 632 | 633 | return; |
| @@ -651,15 +652,18 @@ | ||
| 651 | 652 | if( zHostname ){ |
| 652 | 653 | style_header("Checkout Status: %h on %h", zCwd, zHostname); |
| 653 | 654 | }else{ |
| 654 | 655 | style_header("Checkout Status: %h", zCwd); |
| 655 | 656 | } |
| 656 | - builtin_request_js("accordion.js"); | |
| 657 | - @ <div class="section accordion">Context</div> | |
| 658 | - @ <div class="accordion_panel"> <!-- ap-001 --> | |
| 659 | 657 | render_checkin_context(vid, 0, 0, 0); |
| 660 | - @ </div> <!-- ap-001 --> | |
| 658 | + nChng = db_int(0, "SELECT count(*) FROM vfile" | |
| 659 | + " WHERE vid=%d AND (deleted OR chnged OR rid==0)", vid); | |
| 660 | + if( nChng==0 ){ | |
| 661 | + @ <p>No uncommitted changes</p> | |
| 662 | + style_finish_page(); | |
| 663 | + return; | |
| 664 | + } | |
| 661 | 665 | db_prepare(&q, |
| 662 | 666 | /* 0 1 2 3 4 5 6 */ |
| 663 | 667 | "SELECT pathname, deleted, chnged , rid==0, rid, islink, uuid" |
| 664 | 668 | " FROM vfile LEFT JOIN blob USING(rid)" |
| 665 | 669 | " WHERE vid=%d" |
| @@ -670,22 +674,22 @@ | ||
| 670 | 674 | if( DCfg.diffFlags & DIFF_SIDEBYSIDE ){ |
| 671 | 675 | DCfg.diffFlags |= DIFF_HTML | DIFF_NOTTOOBIG; |
| 672 | 676 | }else{ |
| 673 | 677 | DCfg.diffFlags |= DIFF_LINENO | DIFF_HTML | DIFF_NOTTOOBIG; |
| 674 | 678 | } |
| 675 | - @ <div class="section accordion">Uncommitted Changes</div> | |
| 676 | - @ <div class="accordion_panel"> <!-- ap-002 --> | |
| 679 | + if( nChng>1 ){ | |
| 680 | + @ <div class="section">%d(nChng) Uncommitted Changes</div> | |
| 681 | + } else { | |
| 682 | + @ <div class="section">1 Uncommitted Change</div> | |
| 683 | + } | |
| 677 | 684 | @ <div class="sectionmenu info-changes-menu"> |
| 678 | 685 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 679 | - if( diffType!=0 ){ | |
| 680 | - @ %z(chref("button","%R?diff=0"))Hide Diffs</a> | |
| 681 | - } | |
| 682 | 686 | if( diffType!=1 ){ |
| 683 | - @ %z(chref("button","%R?diff=1%s",zW))Unified Diffs</a> | |
| 687 | + @ %z(chref("button","%R?diff=1%s",zW))Unified Diff</a> | |
| 684 | 688 | } |
| 685 | 689 | if( diffType!=2 ){ |
| 686 | - @ %z(chref("button","%R?diff=2%s",zW))Side-by-Side Diffs</a> | |
| 690 | + @ %z(chref("button","%R?diff=2%s",zW))Side-by-Side Diff</a> | |
| 687 | 691 | } |
| 688 | 692 | if( diffType!=0 ){ |
| 689 | 693 | if( *zW ){ |
| 690 | 694 | @ %z(chref("button","%R?diff=%d",diffType))\ |
| 691 | 695 | @ Show Whitespace Changes</a> |
| @@ -750,11 +754,11 @@ | ||
| 750 | 754 | blob_reset(&old); |
| 751 | 755 | blob_reset(&new); |
| 752 | 756 | } |
| 753 | 757 | } |
| 754 | 758 | db_finalize(&q); |
| 755 | - @ </div> <!-- ap-002 --> | |
| 759 | + // @ </div> <!-- ap-002 --> | |
| 756 | 760 | append_diff_javascript(diffType); |
| 757 | 761 | style_finish_page(); |
| 758 | 762 | } |
| 759 | 763 | |
| 760 | 764 | /* |
| @@ -780,11 +784,10 @@ | ||
| 780 | 784 | const char *zParent; /* Hash of the parent check-in (if any) */ |
| 781 | 785 | const char *zRe; /* regex parameter */ |
| 782 | 786 | ReCompiled *pRe = 0; /* regex */ |
| 783 | 787 | const char *zW; /* URL param for ignoring whitespace */ |
| 784 | 788 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 785 | - const char *zPageHide = "ci"; /* Page that hides diffs */ | |
| 786 | 789 | const char *zBrName; /* Branch name */ |
| 787 | 790 | DiffConfig DCfg,*pCfg; /* Type of diff */ |
| 788 | 791 | |
| 789 | 792 | login_check_credentials(); |
| 790 | 793 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| @@ -1050,21 +1053,17 @@ | ||
| 1050 | 1053 | @ <div class="sectionmenu info-changes-menu"> |
| 1051 | 1054 | /* ^^^ .info-changes-menu is used by diff scroll sync */ |
| 1052 | 1055 | pCfg = construct_diff_flags(diffType, &DCfg); |
| 1053 | 1056 | DCfg.pRe = pRe; |
| 1054 | 1057 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 1055 | - if( diffType!=0 ){ | |
| 1056 | - @ %z(chref("button","%R/%s/%T?diff=0",zPageHide,zName))\ | |
| 1057 | - @ Hide Diffs</a> | |
| 1058 | - } | |
| 1059 | 1058 | if( diffType!=1 ){ |
| 1060 | 1059 | @ %z(chref("button","%R/%s/%T?diff=1%s",zPage,zName,zW))\ |
| 1061 | - @ Unified Diffs</a> | |
| 1060 | + @ Unified Diff</a> | |
| 1062 | 1061 | } |
| 1063 | 1062 | if( diffType!=2 ){ |
| 1064 | 1063 | @ %z(chref("button","%R/%s/%T?diff=2%s",zPage,zName,zW))\ |
| 1065 | - @ Side-by-Side Diffs</a> | |
| 1064 | + @ Side-by-Side Diff</a> | |
| 1066 | 1065 | } |
| 1067 | 1066 | if( diffType!=0 ){ |
| 1068 | 1067 | if( *zW ){ |
| 1069 | 1068 | @ %z(chref("button","%R/%s/%T",zPage,zName)) |
| 1070 | 1069 | @ Show Whitespace Changes</a> |
| @@ -1420,13 +1419,10 @@ | ||
| 1420 | 1419 | cgi_check_for_malice(); |
| 1421 | 1420 | style_set_current_feature("vdiff"); |
| 1422 | 1421 | if( zBranch==0 ){ |
| 1423 | 1422 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1424 | 1423 | } |
| 1425 | - if( diffType!=0 ){ | |
| 1426 | - style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b%b", &qp, &qpGlob); | |
| 1427 | - } | |
| 1428 | 1424 | if( diffType!=2 ){ |
| 1429 | 1425 | style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b%b", &qp, |
| 1430 | 1426 | &qpGlob); |
| 1431 | 1427 | } |
| 1432 | 1428 | if( diffType!=1 ) { |
| 1433 | 1429 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -623,10 +623,11 @@ | |
| 623 | char *zCwd; |
| 624 | int diffType; /* 0: no diff, 1: unified, 2: side-by-side */ |
| 625 | DiffConfig DCfg,*pCfg; /* Diff details */ |
| 626 | const char *zHome; /* Home directory */ |
| 627 | const char *zW; /* The "w" query parameter */ |
| 628 | Stmt q; |
| 629 | |
| 630 | if( !db_open_local(0) || !cgi_is_loopback(g.zIpAddr) ){ |
| 631 | cgi_redirect("%R/home"); |
| 632 | return; |
| @@ -651,15 +652,18 @@ | |
| 651 | if( zHostname ){ |
| 652 | style_header("Checkout Status: %h on %h", zCwd, zHostname); |
| 653 | }else{ |
| 654 | style_header("Checkout Status: %h", zCwd); |
| 655 | } |
| 656 | builtin_request_js("accordion.js"); |
| 657 | @ <div class="section accordion">Context</div> |
| 658 | @ <div class="accordion_panel"> <!-- ap-001 --> |
| 659 | render_checkin_context(vid, 0, 0, 0); |
| 660 | @ </div> <!-- ap-001 --> |
| 661 | db_prepare(&q, |
| 662 | /* 0 1 2 3 4 5 6 */ |
| 663 | "SELECT pathname, deleted, chnged , rid==0, rid, islink, uuid" |
| 664 | " FROM vfile LEFT JOIN blob USING(rid)" |
| 665 | " WHERE vid=%d" |
| @@ -670,22 +674,22 @@ | |
| 670 | if( DCfg.diffFlags & DIFF_SIDEBYSIDE ){ |
| 671 | DCfg.diffFlags |= DIFF_HTML | DIFF_NOTTOOBIG; |
| 672 | }else{ |
| 673 | DCfg.diffFlags |= DIFF_LINENO | DIFF_HTML | DIFF_NOTTOOBIG; |
| 674 | } |
| 675 | @ <div class="section accordion">Uncommitted Changes</div> |
| 676 | @ <div class="accordion_panel"> <!-- ap-002 --> |
| 677 | @ <div class="sectionmenu info-changes-menu"> |
| 678 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 679 | if( diffType!=0 ){ |
| 680 | @ %z(chref("button","%R?diff=0"))Hide Diffs</a> |
| 681 | } |
| 682 | if( diffType!=1 ){ |
| 683 | @ %z(chref("button","%R?diff=1%s",zW))Unified Diffs</a> |
| 684 | } |
| 685 | if( diffType!=2 ){ |
| 686 | @ %z(chref("button","%R?diff=2%s",zW))Side-by-Side Diffs</a> |
| 687 | } |
| 688 | if( diffType!=0 ){ |
| 689 | if( *zW ){ |
| 690 | @ %z(chref("button","%R?diff=%d",diffType))\ |
| 691 | @ Show Whitespace Changes</a> |
| @@ -750,11 +754,11 @@ | |
| 750 | blob_reset(&old); |
| 751 | blob_reset(&new); |
| 752 | } |
| 753 | } |
| 754 | db_finalize(&q); |
| 755 | @ </div> <!-- ap-002 --> |
| 756 | append_diff_javascript(diffType); |
| 757 | style_finish_page(); |
| 758 | } |
| 759 | |
| 760 | /* |
| @@ -780,11 +784,10 @@ | |
| 780 | const char *zParent; /* Hash of the parent check-in (if any) */ |
| 781 | const char *zRe; /* regex parameter */ |
| 782 | ReCompiled *pRe = 0; /* regex */ |
| 783 | const char *zW; /* URL param for ignoring whitespace */ |
| 784 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 785 | const char *zPageHide = "ci"; /* Page that hides diffs */ |
| 786 | const char *zBrName; /* Branch name */ |
| 787 | DiffConfig DCfg,*pCfg; /* Type of diff */ |
| 788 | |
| 789 | login_check_credentials(); |
| 790 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| @@ -1050,21 +1053,17 @@ | |
| 1050 | @ <div class="sectionmenu info-changes-menu"> |
| 1051 | /* ^^^ .info-changes-menu is used by diff scroll sync */ |
| 1052 | pCfg = construct_diff_flags(diffType, &DCfg); |
| 1053 | DCfg.pRe = pRe; |
| 1054 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 1055 | if( diffType!=0 ){ |
| 1056 | @ %z(chref("button","%R/%s/%T?diff=0",zPageHide,zName))\ |
| 1057 | @ Hide Diffs</a> |
| 1058 | } |
| 1059 | if( diffType!=1 ){ |
| 1060 | @ %z(chref("button","%R/%s/%T?diff=1%s",zPage,zName,zW))\ |
| 1061 | @ Unified Diffs</a> |
| 1062 | } |
| 1063 | if( diffType!=2 ){ |
| 1064 | @ %z(chref("button","%R/%s/%T?diff=2%s",zPage,zName,zW))\ |
| 1065 | @ Side-by-Side Diffs</a> |
| 1066 | } |
| 1067 | if( diffType!=0 ){ |
| 1068 | if( *zW ){ |
| 1069 | @ %z(chref("button","%R/%s/%T",zPage,zName)) |
| 1070 | @ Show Whitespace Changes</a> |
| @@ -1420,13 +1419,10 @@ | |
| 1420 | cgi_check_for_malice(); |
| 1421 | style_set_current_feature("vdiff"); |
| 1422 | if( zBranch==0 ){ |
| 1423 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1424 | } |
| 1425 | if( diffType!=0 ){ |
| 1426 | style_submenu_element("Hide Diff", "%R/vdiff?diff=0&%b%b", &qp, &qpGlob); |
| 1427 | } |
| 1428 | if( diffType!=2 ){ |
| 1429 | style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b%b", &qp, |
| 1430 | &qpGlob); |
| 1431 | } |
| 1432 | if( diffType!=1 ) { |
| 1433 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -623,10 +623,11 @@ | |
| 623 | char *zCwd; |
| 624 | int diffType; /* 0: no diff, 1: unified, 2: side-by-side */ |
| 625 | DiffConfig DCfg,*pCfg; /* Diff details */ |
| 626 | const char *zHome; /* Home directory */ |
| 627 | const char *zW; /* The "w" query parameter */ |
| 628 | int nChng; /* Number of changes */ |
| 629 | Stmt q; |
| 630 | |
| 631 | if( !db_open_local(0) || !cgi_is_loopback(g.zIpAddr) ){ |
| 632 | cgi_redirect("%R/home"); |
| 633 | return; |
| @@ -651,15 +652,18 @@ | |
| 652 | if( zHostname ){ |
| 653 | style_header("Checkout Status: %h on %h", zCwd, zHostname); |
| 654 | }else{ |
| 655 | style_header("Checkout Status: %h", zCwd); |
| 656 | } |
| 657 | render_checkin_context(vid, 0, 0, 0); |
| 658 | nChng = db_int(0, "SELECT count(*) FROM vfile" |
| 659 | " WHERE vid=%d AND (deleted OR chnged OR rid==0)", vid); |
| 660 | if( nChng==0 ){ |
| 661 | @ <p>No uncommitted changes</p> |
| 662 | style_finish_page(); |
| 663 | return; |
| 664 | } |
| 665 | db_prepare(&q, |
| 666 | /* 0 1 2 3 4 5 6 */ |
| 667 | "SELECT pathname, deleted, chnged , rid==0, rid, islink, uuid" |
| 668 | " FROM vfile LEFT JOIN blob USING(rid)" |
| 669 | " WHERE vid=%d" |
| @@ -670,22 +674,22 @@ | |
| 674 | if( DCfg.diffFlags & DIFF_SIDEBYSIDE ){ |
| 675 | DCfg.diffFlags |= DIFF_HTML | DIFF_NOTTOOBIG; |
| 676 | }else{ |
| 677 | DCfg.diffFlags |= DIFF_LINENO | DIFF_HTML | DIFF_NOTTOOBIG; |
| 678 | } |
| 679 | if( nChng>1 ){ |
| 680 | @ <div class="section">%d(nChng) Uncommitted Changes</div> |
| 681 | } else { |
| 682 | @ <div class="section">1 Uncommitted Change</div> |
| 683 | } |
| 684 | @ <div class="sectionmenu info-changes-menu"> |
| 685 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 686 | if( diffType!=1 ){ |
| 687 | @ %z(chref("button","%R?diff=1%s",zW))Unified Diff</a> |
| 688 | } |
| 689 | if( diffType!=2 ){ |
| 690 | @ %z(chref("button","%R?diff=2%s",zW))Side-by-Side Diff</a> |
| 691 | } |
| 692 | if( diffType!=0 ){ |
| 693 | if( *zW ){ |
| 694 | @ %z(chref("button","%R?diff=%d",diffType))\ |
| 695 | @ Show Whitespace Changes</a> |
| @@ -750,11 +754,11 @@ | |
| 754 | blob_reset(&old); |
| 755 | blob_reset(&new); |
| 756 | } |
| 757 | } |
| 758 | db_finalize(&q); |
| 759 | // @ </div> <!-- ap-002 --> |
| 760 | append_diff_javascript(diffType); |
| 761 | style_finish_page(); |
| 762 | } |
| 763 | |
| 764 | /* |
| @@ -780,11 +784,10 @@ | |
| 784 | const char *zParent; /* Hash of the parent check-in (if any) */ |
| 785 | const char *zRe; /* regex parameter */ |
| 786 | ReCompiled *pRe = 0; /* regex */ |
| 787 | const char *zW; /* URL param for ignoring whitespace */ |
| 788 | const char *zPage = "vinfo"; /* Page that shows diffs */ |
| 789 | const char *zBrName; /* Branch name */ |
| 790 | DiffConfig DCfg,*pCfg; /* Type of diff */ |
| 791 | |
| 792 | login_check_credentials(); |
| 793 | if( !g.perm.Read ){ login_needed(g.anon.Read); return; } |
| @@ -1050,21 +1053,17 @@ | |
| 1053 | @ <div class="sectionmenu info-changes-menu"> |
| 1054 | /* ^^^ .info-changes-menu is used by diff scroll sync */ |
| 1055 | pCfg = construct_diff_flags(diffType, &DCfg); |
| 1056 | DCfg.pRe = pRe; |
| 1057 | zW = (DCfg.diffFlags&DIFF_IGNORE_ALLWS)?"&w":""; |
| 1058 | if( diffType!=1 ){ |
| 1059 | @ %z(chref("button","%R/%s/%T?diff=1%s",zPage,zName,zW))\ |
| 1060 | @ Unified Diff</a> |
| 1061 | } |
| 1062 | if( diffType!=2 ){ |
| 1063 | @ %z(chref("button","%R/%s/%T?diff=2%s",zPage,zName,zW))\ |
| 1064 | @ Side-by-Side Diff</a> |
| 1065 | } |
| 1066 | if( diffType!=0 ){ |
| 1067 | if( *zW ){ |
| 1068 | @ %z(chref("button","%R/%s/%T",zPage,zName)) |
| 1069 | @ Show Whitespace Changes</a> |
| @@ -1420,13 +1419,10 @@ | |
| 1419 | cgi_check_for_malice(); |
| 1420 | style_set_current_feature("vdiff"); |
| 1421 | if( zBranch==0 ){ |
| 1422 | style_submenu_element("Path", "%R/timeline?me=%T&you=%T", zFrom, zTo); |
| 1423 | } |
| 1424 | if( diffType!=2 ){ |
| 1425 | style_submenu_element("Side-by-Side Diff", "%R/vdiff?diff=2&%b%b", &qp, |
| 1426 | &qpGlob); |
| 1427 | } |
| 1428 | if( diffType!=1 ) { |
| 1429 |