Fossil SCM
Disable additional hyperlinks when "history" privilege is disabled (by default when the user has not signed in as "anonymous" or other known user.) Help prevent spiders for soaking up bandwidth.
Commit
5fe3aee8394b13baf8e71aef12228abce54aa2c6
Parent
d42adc11c8473e0…
2 files changed
+42
-13
+5
-1
+42
-13
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -364,11 +364,18 @@ | ||
| 364 | 364 | int pid = db_column_int(&q,0); |
| 365 | 365 | int fid = db_column_int(&q,1); |
| 366 | 366 | const char *zName = db_column_text(&q,2); |
| 367 | 367 | const char *zOld = db_column_text(&q,3); |
| 368 | 368 | const char *zNew = db_column_text(&q,4); |
| 369 | - if( zOld && zNew ){ | |
| 369 | + if( !g.okHistory ){ | |
| 370 | + if( zNew==0 ){ | |
| 371 | + @ <p>Deleted %h(zName)</p> | |
| 372 | + continue; | |
| 373 | + }else{ | |
| 374 | + @ <p>Changes to %h(zName)</p> | |
| 375 | + } | |
| 376 | + }else if( zOld && zNew ){ | |
| 370 | 377 | @ <p>Modified <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| 371 | 378 | @ from <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a> |
| 372 | 379 | @ to <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p> |
| 373 | 380 | }else if( zOld ){ |
| 374 | 381 | @ <p>Deleted <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| @@ -584,12 +591,15 @@ | ||
| 584 | 591 | const char *zComment = db_column_text(&q, 1); |
| 585 | 592 | @ <h2>Check-in %s(zUuid)</h2> |
| 586 | 593 | @ <p>Made by |
| 587 | 594 | hyperlink_to_user(zUser,zDate," on"); |
| 588 | 595 | hyperlink_to_date(zDate, ":"); |
| 589 | - @ %w(zComment). <a href="%s(g.zBaseURL)/ci/%s(zUuid)">[details]</a></p> | |
| 590 | - @ <hr> | |
| 596 | + @ %w(zComment). | |
| 597 | + if( g.okHistory ){ | |
| 598 | + @ <a href="%s(g.zBaseURL)/ci/%s(zUuid)">[details]</a> | |
| 599 | + } | |
| 600 | + @ </p><hr> | |
| 591 | 601 | } |
| 592 | 602 | db_finalize(&q); |
| 593 | 603 | db_prepare(&q, |
| 594 | 604 | "SELECT pid, fid, name" |
| 595 | 605 | " FROM mlink, filename" |
| @@ -600,11 +610,15 @@ | ||
| 600 | 610 | ); |
| 601 | 611 | while( db_step(&q)==SQLITE_ROW ){ |
| 602 | 612 | int pid = db_column_int(&q,0); |
| 603 | 613 | int fid = db_column_int(&q,1); |
| 604 | 614 | const char *zName = db_column_text(&q,2); |
| 605 | - @ <p><a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a></p> | |
| 615 | + if( g.okHistory ){ | |
| 616 | + @ <p><a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a></p> | |
| 617 | + }else{ | |
| 618 | + @ <p>%h(zName)</p> | |
| 619 | + } | |
| 606 | 620 | @ <blockquote><pre> |
| 607 | 621 | append_diff(pid, fid); |
| 608 | 622 | @ </pre></blockquote> |
| 609 | 623 | } |
| 610 | 624 | db_finalize(&q); |
| @@ -656,11 +670,15 @@ | ||
| 656 | 670 | if( cnt>0 ){ |
| 657 | 671 | @ Also file |
| 658 | 672 | }else{ |
| 659 | 673 | @ File |
| 660 | 674 | } |
| 661 | - @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> | |
| 675 | + if( g.okHistory ){ | |
| 676 | + @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> | |
| 677 | + }else{ | |
| 678 | + @ %h(zName) | |
| 679 | + } | |
| 662 | 680 | @ part of check-in |
| 663 | 681 | hyperlink_to_uuid(zVers); |
| 664 | 682 | @ - %w(zCom) by |
| 665 | 683 | hyperlink_to_user(zUser,zDate," on"); |
| 666 | 684 | hyperlink_to_date(zDate,"."); |
| @@ -687,11 +705,15 @@ | ||
| 687 | 705 | if( cnt>0 ){ |
| 688 | 706 | @ Also wiki page |
| 689 | 707 | }else{ |
| 690 | 708 | @ Wiki page |
| 691 | 709 | } |
| 692 | - @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>] | |
| 710 | + if( g.okHistory ){ | |
| 711 | + @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>] | |
| 712 | + }else{ | |
| 713 | + @ [%h(zPagename)] | |
| 714 | + } | |
| 693 | 715 | @ by |
| 694 | 716 | hyperlink_to_user(zUser,zDate," on"); |
| 695 | 717 | hyperlink_to_date(zDate,"."); |
| 696 | 718 | nWiki++; |
| 697 | 719 | cnt++; |
| @@ -741,11 +763,11 @@ | ||
| 741 | 763 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 742 | 764 | @ Control artifact. |
| 743 | 765 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 744 | 766 | blob_append(pDownloadName, zUuid, -1); |
| 745 | 767 | } |
| 746 | - }else if( linkToView ){ | |
| 768 | + }else if( linkToView && g.okHistory ){ | |
| 747 | 769 | @ <a href="%s(g.zBaseURL)/artifact/%d(rid)">[view]</a> |
| 748 | 770 | } |
| 749 | 771 | } |
| 750 | 772 | |
| 751 | 773 | |
| @@ -1029,16 +1051,23 @@ | ||
| 1029 | 1051 | } |
| 1030 | 1052 | style_header("Ticket Change Details"); |
| 1031 | 1053 | zDate = db_text(0, "SELECT datetime(%.12f)", m.rDate); |
| 1032 | 1054 | memcpy(zTktName, m.zTicketUuid, 10); |
| 1033 | 1055 | zTktName[10] = 0; |
| 1034 | - @ <h2>Changes to ticket <a href="%s(m.zTicketUuid)">%s(zTktName)</a></h2> | |
| 1035 | - @ | |
| 1036 | - @ <p>By %h(m.zUser) on %s(zDate). See also: | |
| 1037 | - @ <a href="%s(g.zTop)/artifact/%T(zUuid)">artifact content</a>, and | |
| 1038 | - @ <a href="%s(g.zTop)/tkthistory/%s(m.zTicketUuid)">ticket history</a> | |
| 1039 | - @ </p> | |
| 1056 | + if( g.okHistory ){ | |
| 1057 | + @ <h2>Changes to ticket <a href="%s(m.zTicketUuid)">%s(zTktName)</a></h2> | |
| 1058 | + @ | |
| 1059 | + @ <p>By %h(m.zUser) on %s(zDate). See also: | |
| 1060 | + @ <a href="%s(g.zTop)/artifact/%T(zUuid)">artifact content</a>, and | |
| 1061 | + @ <a href="%s(g.zTop)/tkthistory/%s(m.zTicketUuid)">ticket history</a> | |
| 1062 | + @ </p> | |
| 1063 | + }else{ | |
| 1064 | + @ <h2>Changes to ticket %s(zTktName)</h2> | |
| 1065 | + @ | |
| 1066 | + @ <p>By %h(m.zUser) on %s(zDate). | |
| 1067 | + @ </p> | |
| 1068 | + } | |
| 1040 | 1069 | @ |
| 1041 | 1070 | @ <ol> |
| 1042 | 1071 | free(zDate); |
| 1043 | 1072 | ticket_output_change_artifact(&m); |
| 1044 | 1073 | manifest_clear(&m); |
| 1045 | 1074 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -364,11 +364,18 @@ | |
| 364 | int pid = db_column_int(&q,0); |
| 365 | int fid = db_column_int(&q,1); |
| 366 | const char *zName = db_column_text(&q,2); |
| 367 | const char *zOld = db_column_text(&q,3); |
| 368 | const char *zNew = db_column_text(&q,4); |
| 369 | if( zOld && zNew ){ |
| 370 | @ <p>Modified <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| 371 | @ from <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a> |
| 372 | @ to <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p> |
| 373 | }else if( zOld ){ |
| 374 | @ <p>Deleted <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| @@ -584,12 +591,15 @@ | |
| 584 | const char *zComment = db_column_text(&q, 1); |
| 585 | @ <h2>Check-in %s(zUuid)</h2> |
| 586 | @ <p>Made by |
| 587 | hyperlink_to_user(zUser,zDate," on"); |
| 588 | hyperlink_to_date(zDate, ":"); |
| 589 | @ %w(zComment). <a href="%s(g.zBaseURL)/ci/%s(zUuid)">[details]</a></p> |
| 590 | @ <hr> |
| 591 | } |
| 592 | db_finalize(&q); |
| 593 | db_prepare(&q, |
| 594 | "SELECT pid, fid, name" |
| 595 | " FROM mlink, filename" |
| @@ -600,11 +610,15 @@ | |
| 600 | ); |
| 601 | while( db_step(&q)==SQLITE_ROW ){ |
| 602 | int pid = db_column_int(&q,0); |
| 603 | int fid = db_column_int(&q,1); |
| 604 | const char *zName = db_column_text(&q,2); |
| 605 | @ <p><a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a></p> |
| 606 | @ <blockquote><pre> |
| 607 | append_diff(pid, fid); |
| 608 | @ </pre></blockquote> |
| 609 | } |
| 610 | db_finalize(&q); |
| @@ -656,11 +670,15 @@ | |
| 656 | if( cnt>0 ){ |
| 657 | @ Also file |
| 658 | }else{ |
| 659 | @ File |
| 660 | } |
| 661 | @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| 662 | @ part of check-in |
| 663 | hyperlink_to_uuid(zVers); |
| 664 | @ - %w(zCom) by |
| 665 | hyperlink_to_user(zUser,zDate," on"); |
| 666 | hyperlink_to_date(zDate,"."); |
| @@ -687,11 +705,15 @@ | |
| 687 | if( cnt>0 ){ |
| 688 | @ Also wiki page |
| 689 | }else{ |
| 690 | @ Wiki page |
| 691 | } |
| 692 | @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>] |
| 693 | @ by |
| 694 | hyperlink_to_user(zUser,zDate," on"); |
| 695 | hyperlink_to_date(zDate,"."); |
| 696 | nWiki++; |
| 697 | cnt++; |
| @@ -741,11 +763,11 @@ | |
| 741 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 742 | @ Control artifact. |
| 743 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 744 | blob_append(pDownloadName, zUuid, -1); |
| 745 | } |
| 746 | }else if( linkToView ){ |
| 747 | @ <a href="%s(g.zBaseURL)/artifact/%d(rid)">[view]</a> |
| 748 | } |
| 749 | } |
| 750 | |
| 751 | |
| @@ -1029,16 +1051,23 @@ | |
| 1029 | } |
| 1030 | style_header("Ticket Change Details"); |
| 1031 | zDate = db_text(0, "SELECT datetime(%.12f)", m.rDate); |
| 1032 | memcpy(zTktName, m.zTicketUuid, 10); |
| 1033 | zTktName[10] = 0; |
| 1034 | @ <h2>Changes to ticket <a href="%s(m.zTicketUuid)">%s(zTktName)</a></h2> |
| 1035 | @ |
| 1036 | @ <p>By %h(m.zUser) on %s(zDate). See also: |
| 1037 | @ <a href="%s(g.zTop)/artifact/%T(zUuid)">artifact content</a>, and |
| 1038 | @ <a href="%s(g.zTop)/tkthistory/%s(m.zTicketUuid)">ticket history</a> |
| 1039 | @ </p> |
| 1040 | @ |
| 1041 | @ <ol> |
| 1042 | free(zDate); |
| 1043 | ticket_output_change_artifact(&m); |
| 1044 | manifest_clear(&m); |
| 1045 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -364,11 +364,18 @@ | |
| 364 | int pid = db_column_int(&q,0); |
| 365 | int fid = db_column_int(&q,1); |
| 366 | const char *zName = db_column_text(&q,2); |
| 367 | const char *zOld = db_column_text(&q,3); |
| 368 | const char *zNew = db_column_text(&q,4); |
| 369 | if( !g.okHistory ){ |
| 370 | if( zNew==0 ){ |
| 371 | @ <p>Deleted %h(zName)</p> |
| 372 | continue; |
| 373 | }else{ |
| 374 | @ <p>Changes to %h(zName)</p> |
| 375 | } |
| 376 | }else if( zOld && zNew ){ |
| 377 | @ <p>Modified <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| 378 | @ from <a href="%s(g.zBaseURL)/artifact/%s(zOld)">[%s(zOld)]</a> |
| 379 | @ to <a href="%s(g.zBaseURL)/artifact/%s(zNew)">[%s(zNew)]</a></p> |
| 380 | }else if( zOld ){ |
| 381 | @ <p>Deleted <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| @@ -584,12 +591,15 @@ | |
| 591 | const char *zComment = db_column_text(&q, 1); |
| 592 | @ <h2>Check-in %s(zUuid)</h2> |
| 593 | @ <p>Made by |
| 594 | hyperlink_to_user(zUser,zDate," on"); |
| 595 | hyperlink_to_date(zDate, ":"); |
| 596 | @ %w(zComment). |
| 597 | if( g.okHistory ){ |
| 598 | @ <a href="%s(g.zBaseURL)/ci/%s(zUuid)">[details]</a> |
| 599 | } |
| 600 | @ </p><hr> |
| 601 | } |
| 602 | db_finalize(&q); |
| 603 | db_prepare(&q, |
| 604 | "SELECT pid, fid, name" |
| 605 | " FROM mlink, filename" |
| @@ -600,11 +610,15 @@ | |
| 610 | ); |
| 611 | while( db_step(&q)==SQLITE_ROW ){ |
| 612 | int pid = db_column_int(&q,0); |
| 613 | int fid = db_column_int(&q,1); |
| 614 | const char *zName = db_column_text(&q,2); |
| 615 | if( g.okHistory ){ |
| 616 | @ <p><a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a></p> |
| 617 | }else{ |
| 618 | @ <p>%h(zName)</p> |
| 619 | } |
| 620 | @ <blockquote><pre> |
| 621 | append_diff(pid, fid); |
| 622 | @ </pre></blockquote> |
| 623 | } |
| 624 | db_finalize(&q); |
| @@ -656,11 +670,15 @@ | |
| 670 | if( cnt>0 ){ |
| 671 | @ Also file |
| 672 | }else{ |
| 673 | @ File |
| 674 | } |
| 675 | if( g.okHistory ){ |
| 676 | @ <a href="%s(g.zBaseURL)/finfo?name=%T(zName)">%h(zName)</a> |
| 677 | }else{ |
| 678 | @ %h(zName) |
| 679 | } |
| 680 | @ part of check-in |
| 681 | hyperlink_to_uuid(zVers); |
| 682 | @ - %w(zCom) by |
| 683 | hyperlink_to_user(zUser,zDate," on"); |
| 684 | hyperlink_to_date(zDate,"."); |
| @@ -687,11 +705,15 @@ | |
| 705 | if( cnt>0 ){ |
| 706 | @ Also wiki page |
| 707 | }else{ |
| 708 | @ Wiki page |
| 709 | } |
| 710 | if( g.okHistory ){ |
| 711 | @ [<a href="%s(g.zBaseURL)/wiki?name=%t(zPagename)">%h(zPagename)</a>] |
| 712 | }else{ |
| 713 | @ [%h(zPagename)] |
| 714 | } |
| 715 | @ by |
| 716 | hyperlink_to_user(zUser,zDate," on"); |
| 717 | hyperlink_to_date(zDate,"."); |
| 718 | nWiki++; |
| 719 | cnt++; |
| @@ -741,11 +763,11 @@ | |
| 763 | char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid); |
| 764 | @ Control artifact. |
| 765 | if( pDownloadName && blob_size(pDownloadName)==0 ){ |
| 766 | blob_append(pDownloadName, zUuid, -1); |
| 767 | } |
| 768 | }else if( linkToView && g.okHistory ){ |
| 769 | @ <a href="%s(g.zBaseURL)/artifact/%d(rid)">[view]</a> |
| 770 | } |
| 771 | } |
| 772 | |
| 773 | |
| @@ -1029,16 +1051,23 @@ | |
| 1051 | } |
| 1052 | style_header("Ticket Change Details"); |
| 1053 | zDate = db_text(0, "SELECT datetime(%.12f)", m.rDate); |
| 1054 | memcpy(zTktName, m.zTicketUuid, 10); |
| 1055 | zTktName[10] = 0; |
| 1056 | if( g.okHistory ){ |
| 1057 | @ <h2>Changes to ticket <a href="%s(m.zTicketUuid)">%s(zTktName)</a></h2> |
| 1058 | @ |
| 1059 | @ <p>By %h(m.zUser) on %s(zDate). See also: |
| 1060 | @ <a href="%s(g.zTop)/artifact/%T(zUuid)">artifact content</a>, and |
| 1061 | @ <a href="%s(g.zTop)/tkthistory/%s(m.zTicketUuid)">ticket history</a> |
| 1062 | @ </p> |
| 1063 | }else{ |
| 1064 | @ <h2>Changes to ticket %s(zTktName)</h2> |
| 1065 | @ |
| 1066 | @ <p>By %h(m.zUser) on %s(zDate). |
| 1067 | @ </p> |
| 1068 | } |
| 1069 | @ |
| 1070 | @ <ol> |
| 1071 | free(zDate); |
| 1072 | ticket_output_change_artifact(&m); |
| 1073 | manifest_clear(&m); |
| 1074 |
+5
-1
| --- src/report.c | ||
| +++ src/report.c | ||
| @@ -783,11 +783,15 @@ | ||
| 783 | 783 | wiki_convert(&content, 0, 0); |
| 784 | 784 | blob_reset(&content); |
| 785 | 785 | } |
| 786 | 786 | }else if( azName[i][0]=='#' ){ |
| 787 | 787 | zTid = zData; |
| 788 | - @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td> | |
| 788 | + if( g.okHistory ){ | |
| 789 | + @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td> | |
| 790 | + }else{ | |
| 791 | + @ <td valign="top">%h(zData)</td> | |
| 792 | + } | |
| 789 | 793 | }else if( zData[0]==0 ){ |
| 790 | 794 | @ <td valign="top"> </td> |
| 791 | 795 | }else{ |
| 792 | 796 | @ <td valign="top"> |
| 793 | 797 | @ %h(zData) |
| 794 | 798 |
| --- src/report.c | |
| +++ src/report.c | |
| @@ -783,11 +783,15 @@ | |
| 783 | wiki_convert(&content, 0, 0); |
| 784 | blob_reset(&content); |
| 785 | } |
| 786 | }else if( azName[i][0]=='#' ){ |
| 787 | zTid = zData; |
| 788 | @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td> |
| 789 | }else if( zData[0]==0 ){ |
| 790 | @ <td valign="top"> </td> |
| 791 | }else{ |
| 792 | @ <td valign="top"> |
| 793 | @ %h(zData) |
| 794 |
| --- src/report.c | |
| +++ src/report.c | |
| @@ -783,11 +783,15 @@ | |
| 783 | wiki_convert(&content, 0, 0); |
| 784 | blob_reset(&content); |
| 785 | } |
| 786 | }else if( azName[i][0]=='#' ){ |
| 787 | zTid = zData; |
| 788 | if( g.okHistory ){ |
| 789 | @ <td valign="top"><a href="tktview?name=%h(zData)">%h(zData)</a></td> |
| 790 | }else{ |
| 791 | @ <td valign="top">%h(zData)</td> |
| 792 | } |
| 793 | }else if( zData[0]==0 ){ |
| 794 | @ <td valign="top"> </td> |
| 795 | }else{ |
| 796 | @ <td valign="top"> |
| 797 | @ %h(zData) |
| 798 |