Fossil SCM

Reorganize the elements of the "Overview" section of a check-in view, to give more prominence to the "Download" links.

drh 2017-12-06 16:50 trunk
Commit 4290984dd36877e4544ee997b1f75ac81ed67f2d3d259cd0d1444bf4ade501f5
2 files changed +8 -8 +74 -75
+8 -8
--- src/browse.c
+++ src/browse.c
@@ -1077,18 +1077,18 @@
10771077
}
10781078
}
10791079
db_reset(&q2);
10801080
@ </td>
10811081
@ <td>
1082
- @ %z(href("%R/info/%!S",zUuid))[%S(zUuid)]</a>
1083
- if( showId ){
1084
- @ (%d(mid))
1085
- }
1086
- @ %W(zComment) (user:
1087
- @ %z(href("%R/timeline?u=%t&c=%!S&nd&n=200",zUser,zUuid))%h(zUser)</a>,
1088
- @ branch:
1089
- @ %z(href("%R/timeline?r=%t&c=%!S&nd&n=200",zBranch,zUuid))%h(zBranch)</a>)
1082
+ @ %W(zComment)
1083
+ @ (check-in:&nbsp;%z(href("%R/ci/%!S",zUuid))%S(zUuid)</a>,
1084
+ if( showId ){
1085
+ @ id: %d(mid)
1086
+ }
1087
+ @ user:&nbsp;%z(href("%R/timeline?u=%t&c=%!S&nd",zUser,zUuid))%h(zUser)</a>,
1088
+ @ branch:&nbsp;\
1089
+ @ %z(href("%R/timeline?r=%t&c=%!S&nd",zBranch,zUuid))%h(zBranch)</a>)
10901090
@ </td></tr>
10911091
@
10921092
fossil_free(zAge);
10931093
}
10941094
@ </table></div>
10951095
--- src/browse.c
+++ src/browse.c
@@ -1077,18 +1077,18 @@
1077 }
1078 }
1079 db_reset(&q2);
1080 @ </td>
1081 @ <td>
1082 @ %z(href("%R/info/%!S",zUuid))[%S(zUuid)]</a>
1083 if( showId ){
1084 @ (%d(mid))
1085 }
1086 @ %W(zComment) (user:
1087 @ %z(href("%R/timeline?u=%t&c=%!S&nd&n=200",zUser,zUuid))%h(zUser)</a>,
1088 @ branch:
1089 @ %z(href("%R/timeline?r=%t&c=%!S&nd&n=200",zBranch,zUuid))%h(zBranch)</a>)
1090 @ </td></tr>
1091 @
1092 fossil_free(zAge);
1093 }
1094 @ </table></div>
1095
--- src/browse.c
+++ src/browse.c
@@ -1077,18 +1077,18 @@
1077 }
1078 }
1079 db_reset(&q2);
1080 @ </td>
1081 @ <td>
1082 @ %W(zComment)
1083 @ (check-in:&nbsp;%z(href("%R/ci/%!S",zUuid))%S(zUuid)</a>,
1084 if( showId ){
1085 @ id: %d(mid)
1086 }
1087 @ user:&nbsp;%z(href("%R/timeline?u=%t&c=%!S&nd",zUser,zUuid))%h(zUser)</a>,
1088 @ branch:&nbsp;\
1089 @ %z(href("%R/timeline?r=%t&c=%!S&nd",zBranch,zUuid))%h(zBranch)</a>)
1090 @ </td></tr>
1091 @
1092 fossil_free(zAge);
1093 }
1094 @ </table></div>
1095
+74 -75
--- src/info.c
+++ src/info.c
@@ -622,10 +622,11 @@
622622
if( db_step(&q1)==SQLITE_ROW ){
623623
const char *zUuid = db_column_text(&q1, 0);
624624
int nUuid = db_column_bytes(&q1, 0);
625625
char *zEUser, *zEComment;
626626
const char *zUser;
627
+ const char *zOrigUser;
627628
const char *zComment;
628629
const char *zDate;
629630
const char *zOrigDate;
630631
631632
style_header("Check-in [%S]", zUuid);
@@ -635,43 +636,94 @@
635636
" WHERE tagid=%d AND rid=%d AND tagtype>0",
636637
TAG_USER, rid);
637638
zEComment = db_text(0,
638639
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
639640
TAG_COMMENT, rid);
640
- zUser = db_column_text(&q1, 2);
641
+ zOrigUser = db_column_text(&q1, 2);
642
+ zUser = zEUser ? zEUser : zOrigUser;
641643
zComment = db_column_text(&q1, 3);
642644
zDate = db_column_text(&q1,1);
643645
zOrigDate = db_column_text(&q1, 4);
646
+ if( zOrigDate==0 ) zOrigDate = zDate;
644647
@ <div class="section">Overview</div>
645648
@ <table class="label-value">
649
+ @ <tr><th>Comment:</th><td class="infoComment">%!W(zComment)</td></tr>
650
+
651
+ /* The Download: line */
652
+ if( g.perm.Zip ){
653
+ char *zPJ = db_get("short-project-name", 0);
654
+ char *zUrl;
655
+ Blob projName;
656
+ int jj;
657
+ if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
658
+ blob_zero(&projName);
659
+ blob_append(&projName, zPJ, -1);
660
+ blob_trim(&projName);
661
+ zPJ = blob_str(&projName);
662
+ for(jj=0; zPJ[jj]; jj++){
663
+ if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){
664
+ zPJ[jj] = '_';
665
+ }
666
+ }
667
+ zUrl = mprintf("%R/tarball/%t-%S.tar.gz?name=%s", zPJ, zUuid, zUuid);
668
+ @ <tr><th>Downloads:</th><td>
669
+ @ %z(href("%s",zUrl))Tarball</a>
670
+ @ | %z(href("%R/zip/%t-%S.zip?name=%!S",zPJ,zUuid,zUuid))ZIP archive</a>
671
+ @ | %z(href("%R/sqlar/%t-%S.sqlar?name=%!S",zPJ,zUuid,zUuid))\
672
+ @ SQL archive</a></td></tr>
673
+ fossil_free(zUrl);
674
+ blob_reset(&projName);
675
+ }
676
+
677
+ @ <tr><th>Timelines:</th><td>
678
+ @ %z(href("%R/timeline?f=%!S&unhide",zUuid))family</a>
679
+ if( zParent ){
680
+ @ | %z(href("%R/timeline?p=%!S&unhide",zUuid))ancestors</a>
681
+ }
682
+ if( !isLeaf ){
683
+ @ | %z(href("%R/timeline?d=%!S&unhide",zUuid))descendants</a>
684
+ }
685
+ if( zParent && !isLeaf ){
686
+ @ | %z(href("%R/timeline?dp=%!S&unhide",zUuid))both</a>
687
+ }
688
+ db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
689
+ " WHERE rid=%d AND tagtype>0 "
690
+ " AND tag.tagid=tagxref.tagid "
691
+ " AND +tag.tagname GLOB 'sym-*'", rid);
692
+ while( db_step(&q2)==SQLITE_ROW ){
693
+ const char *zTagName = db_column_text(&q2, 0);
694
+ @ | %z(href("%R/timeline?r=%T&unhide",zTagName))%h(zTagName)</a>
695
+ }
696
+ db_finalize(&q2);
697
+ @ </td></tr>
698
+
699
+ @ <tr><th>Files:</th>
700
+ @ <td>
701
+ @ %z(href("%R/tree?ci=%!S",zUuid))files</a>
702
+ @ | %z(href("%R/fileage?name=%!S",zUuid))file ages</a>
703
+ @ | %z(href("%R/tree?nofiles&type=tree&ci=%!S",zUuid))folders</a>
704
+ @ </td>
705
+ @ </tr>
706
+
646707
@ <tr><th>%s(hname_alg(nUuid)):</th><td>%s(zUuid)
647708
if( g.perm.Setup ){
648709
@ (Record ID: %d(rid))
649710
}
650711
@ </td></tr>
651
- @ <tr><th>Date:</th><td>
712
+ @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
713
+ hyperlink_to_user(zUser,zDate," on ");
652714
hyperlink_to_date(zDate, "</td></tr>");
653
- if( zOrigDate && fossil_strcmp(zDate, zOrigDate)!=0 ){
654
- @ <tr><th>Original&nbsp;Date:</th><td>
655
- hyperlink_to_date(zOrigDate, "</td></tr>");
656
- }
657
- if( zEUser ){
658
- @ <tr><th>Edited&nbsp;User:</th><td>
659
- hyperlink_to_user(zEUser,zDate,"</td></tr>");
660
- @ <tr><th>Original&nbsp;User:</th><td>
661
- hyperlink_to_user(zUser,zDate,"</td></tr>");
662
- }else{
663
- @ <tr><th>User:</th><td>
664
- hyperlink_to_user(zUser,zDate,"</td></tr>");
665
- }
666715
if( zEComment ){
667
- @ <tr><th>Edited&nbsp;Comment:</th>
668
- @ <td class="infoComment">%!W(zEComment)</td></tr>
669716
@ <tr><th>Original&nbsp;Comment:</th>
670717
@ <td class="infoComment">%!W(zComment)</td></tr>
671
- }else{
672
- @ <tr><th>Comment:</th><td class="infoComment">%!W(zComment)</td></tr>
718
+ }
719
+ if( fossil_strcmp(zDate, zOrigDate)!=0
720
+ || fossil_strcmp(zOrigUser, zUser)!=0
721
+ ){
722
+ @ <tr><th>Original&nbsp;User&nbsp;&amp;&nbsp;Date:</th><td>
723
+ hyperlink_to_user(zOrigUser,zOrigDate," on ");
724
+ hyperlink_to_date(zOrigDate, "</td></tr>");
673725
}
674726
if( g.perm.Admin ){
675727
db_prepare(&q2,
676728
"SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
677729
" FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
@@ -687,73 +739,21 @@
687739
@ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
688740
}
689741
db_finalize(&q2);
690742
}
691743
if( g.perm.Hyperlink ){
692
- char *zPJ = db_get("short-project-name", 0);
693
- Blob projName;
694
- int jj;
695
- if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
696
- blob_zero(&projName);
697
- blob_append(&projName, zPJ, -1);
698
- blob_trim(&projName);
699
- zPJ = blob_str(&projName);
700
- for(jj=0; zPJ[jj]; jj++){
701
- if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){
702
- zPJ[jj] = '_';
703
- }
704
- }
705
- @ <tr><th>Timelines:</th><td>
706
- @ %z(href("%R/timeline?f=%!S&unhide",zUuid))family</a>
707
- if( zParent ){
708
- @ | %z(href("%R/timeline?p=%!S&unhide",zUuid))ancestors</a>
709
- }
710
- if( !isLeaf ){
711
- @ | %z(href("%R/timeline?d=%!S&unhide",zUuid))descendants</a>
712
- }
713
- if( zParent && !isLeaf ){
714
- @ | %z(href("%R/timeline?dp=%!S&unhide",zUuid))both</a>
715
- }
716
- db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
717
- " WHERE rid=%d AND tagtype>0 "
718
- " AND tag.tagid=tagxref.tagid "
719
- " AND +tag.tagname GLOB 'sym-*'", rid);
720
- while( db_step(&q2)==SQLITE_ROW ){
721
- const char *zTagName = db_column_text(&q2, 0);
722
- @ | %z(href("%R/timeline?r=%T&unhide",zTagName))%h(zTagName)</a>
723
- }
724
- db_finalize(&q2);
725
-
726
-
727
- /* The Download: line */
728
- if( g.anon.Zip ){
729
- char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
730
- zPJ, zUuid, zUuid);
731
- @ </td></tr>
732
- @ <tr><th>Downloads:</th><td>
733
- @ %z(href("%s",zUrl))Tarball</a>
734
- @ | %z(href("%R/zip/%t-%S.zip?uuid=%!S",zPJ,zUuid,zUuid))ZIP archive</a>
735
- @ | %z(href("%R/sqlar/%t-%S.sqlar?uuid=%!S",zPJ,zUuid,zUuid))\
736
- @ SQL archive</a>
737
- fossil_free(zUrl);
738
- }
739
- @ </td></tr>
740744
@ <tr><th>Other&nbsp;Links:</th>
741745
@ <td>
742
- @ %z(href("%R/tree?ci=%!S",zUuid))files</a>
743
- @ | %z(href("%R/fileage?name=%!S",zUuid))file ages</a>
744
- @ | %z(href("%R/tree?nofiles&type=tree&ci=%!S",zUuid))folders</a>
745
- @ | %z(href("%R/artifact/%!S",zUuid))manifest</a>
746
+ @ %z(href("%R/artifact/%!S",zUuid))manifest</a>
746747
if( g.perm.Admin ){
747748
@ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a>
748749
}
749750
if( g.anon.Write ){
750751
@ | %z(href("%R/ci_edit?r=%!S",zUuid))edit</a>
751752
}
752753
@ </td>
753754
@ </tr>
754
- blob_reset(&projName);
755755
}
756756
@ </table>
757757
}else{
758758
style_header("Check-in Information");
759759
login_anonymous_available();
@@ -2208,14 +2208,13 @@
22082208
@ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
22092209
if( zTktTitle ){
22102210
@<br />%h(zTktTitle)
22112211
}
22122212
@</td></tr>
2213
- @ <tr><th>Date:</th><td>
2213
+ @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
2214
+ hyperlink_to_user(pTktChng->zUser, zDate, " on ");
22142215
hyperlink_to_date(zDate, "</td></tr>");
2215
- @ <tr><th>User:</th><td>
2216
- hyperlink_to_user(pTktChng->zUser, zDate, "</td></tr>");
22172216
@ </table>
22182217
free(zDate);
22192218
free(zTktTitle);
22202219
22212220
if( g.perm.ModTkt && modPending ){
22222221
--- src/info.c
+++ src/info.c
@@ -622,10 +622,11 @@
622 if( db_step(&q1)==SQLITE_ROW ){
623 const char *zUuid = db_column_text(&q1, 0);
624 int nUuid = db_column_bytes(&q1, 0);
625 char *zEUser, *zEComment;
626 const char *zUser;
 
627 const char *zComment;
628 const char *zDate;
629 const char *zOrigDate;
630
631 style_header("Check-in [%S]", zUuid);
@@ -635,43 +636,94 @@
635 " WHERE tagid=%d AND rid=%d AND tagtype>0",
636 TAG_USER, rid);
637 zEComment = db_text(0,
638 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
639 TAG_COMMENT, rid);
640 zUser = db_column_text(&q1, 2);
 
641 zComment = db_column_text(&q1, 3);
642 zDate = db_column_text(&q1,1);
643 zOrigDate = db_column_text(&q1, 4);
 
644 @ <div class="section">Overview</div>
645 @ <table class="label-value">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646 @ <tr><th>%s(hname_alg(nUuid)):</th><td>%s(zUuid)
647 if( g.perm.Setup ){
648 @ (Record ID: %d(rid))
649 }
650 @ </td></tr>
651 @ <tr><th>Date:</th><td>
 
652 hyperlink_to_date(zDate, "</td></tr>");
653 if( zOrigDate && fossil_strcmp(zDate, zOrigDate)!=0 ){
654 @ <tr><th>Original&nbsp;Date:</th><td>
655 hyperlink_to_date(zOrigDate, "</td></tr>");
656 }
657 if( zEUser ){
658 @ <tr><th>Edited&nbsp;User:</th><td>
659 hyperlink_to_user(zEUser,zDate,"</td></tr>");
660 @ <tr><th>Original&nbsp;User:</th><td>
661 hyperlink_to_user(zUser,zDate,"</td></tr>");
662 }else{
663 @ <tr><th>User:</th><td>
664 hyperlink_to_user(zUser,zDate,"</td></tr>");
665 }
666 if( zEComment ){
667 @ <tr><th>Edited&nbsp;Comment:</th>
668 @ <td class="infoComment">%!W(zEComment)</td></tr>
669 @ <tr><th>Original&nbsp;Comment:</th>
670 @ <td class="infoComment">%!W(zComment)</td></tr>
671 }else{
672 @ <tr><th>Comment:</th><td class="infoComment">%!W(zComment)</td></tr>
 
 
 
 
 
673 }
674 if( g.perm.Admin ){
675 db_prepare(&q2,
676 "SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
677 " FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
@@ -687,73 +739,21 @@
687 @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
688 }
689 db_finalize(&q2);
690 }
691 if( g.perm.Hyperlink ){
692 char *zPJ = db_get("short-project-name", 0);
693 Blob projName;
694 int jj;
695 if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
696 blob_zero(&projName);
697 blob_append(&projName, zPJ, -1);
698 blob_trim(&projName);
699 zPJ = blob_str(&projName);
700 for(jj=0; zPJ[jj]; jj++){
701 if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){
702 zPJ[jj] = '_';
703 }
704 }
705 @ <tr><th>Timelines:</th><td>
706 @ %z(href("%R/timeline?f=%!S&unhide",zUuid))family</a>
707 if( zParent ){
708 @ | %z(href("%R/timeline?p=%!S&unhide",zUuid))ancestors</a>
709 }
710 if( !isLeaf ){
711 @ | %z(href("%R/timeline?d=%!S&unhide",zUuid))descendants</a>
712 }
713 if( zParent && !isLeaf ){
714 @ | %z(href("%R/timeline?dp=%!S&unhide",zUuid))both</a>
715 }
716 db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
717 " WHERE rid=%d AND tagtype>0 "
718 " AND tag.tagid=tagxref.tagid "
719 " AND +tag.tagname GLOB 'sym-*'", rid);
720 while( db_step(&q2)==SQLITE_ROW ){
721 const char *zTagName = db_column_text(&q2, 0);
722 @ | %z(href("%R/timeline?r=%T&unhide",zTagName))%h(zTagName)</a>
723 }
724 db_finalize(&q2);
725
726
727 /* The Download: line */
728 if( g.anon.Zip ){
729 char *zUrl = mprintf("%R/tarball/%t-%S.tar.gz?uuid=%s",
730 zPJ, zUuid, zUuid);
731 @ </td></tr>
732 @ <tr><th>Downloads:</th><td>
733 @ %z(href("%s",zUrl))Tarball</a>
734 @ | %z(href("%R/zip/%t-%S.zip?uuid=%!S",zPJ,zUuid,zUuid))ZIP archive</a>
735 @ | %z(href("%R/sqlar/%t-%S.sqlar?uuid=%!S",zPJ,zUuid,zUuid))\
736 @ SQL archive</a>
737 fossil_free(zUrl);
738 }
739 @ </td></tr>
740 @ <tr><th>Other&nbsp;Links:</th>
741 @ <td>
742 @ %z(href("%R/tree?ci=%!S",zUuid))files</a>
743 @ | %z(href("%R/fileage?name=%!S",zUuid))file ages</a>
744 @ | %z(href("%R/tree?nofiles&type=tree&ci=%!S",zUuid))folders</a>
745 @ | %z(href("%R/artifact/%!S",zUuid))manifest</a>
746 if( g.perm.Admin ){
747 @ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a>
748 }
749 if( g.anon.Write ){
750 @ | %z(href("%R/ci_edit?r=%!S",zUuid))edit</a>
751 }
752 @ </td>
753 @ </tr>
754 blob_reset(&projName);
755 }
756 @ </table>
757 }else{
758 style_header("Check-in Information");
759 login_anonymous_available();
@@ -2208,14 +2208,13 @@
2208 @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
2209 if( zTktTitle ){
2210 @<br />%h(zTktTitle)
2211 }
2212 @</td></tr>
2213 @ <tr><th>Date:</th><td>
 
2214 hyperlink_to_date(zDate, "</td></tr>");
2215 @ <tr><th>User:</th><td>
2216 hyperlink_to_user(pTktChng->zUser, zDate, "</td></tr>");
2217 @ </table>
2218 free(zDate);
2219 free(zTktTitle);
2220
2221 if( g.perm.ModTkt && modPending ){
2222
--- src/info.c
+++ src/info.c
@@ -622,10 +622,11 @@
622 if( db_step(&q1)==SQLITE_ROW ){
623 const char *zUuid = db_column_text(&q1, 0);
624 int nUuid = db_column_bytes(&q1, 0);
625 char *zEUser, *zEComment;
626 const char *zUser;
627 const char *zOrigUser;
628 const char *zComment;
629 const char *zDate;
630 const char *zOrigDate;
631
632 style_header("Check-in [%S]", zUuid);
@@ -635,43 +636,94 @@
636 " WHERE tagid=%d AND rid=%d AND tagtype>0",
637 TAG_USER, rid);
638 zEComment = db_text(0,
639 "SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
640 TAG_COMMENT, rid);
641 zOrigUser = db_column_text(&q1, 2);
642 zUser = zEUser ? zEUser : zOrigUser;
643 zComment = db_column_text(&q1, 3);
644 zDate = db_column_text(&q1,1);
645 zOrigDate = db_column_text(&q1, 4);
646 if( zOrigDate==0 ) zOrigDate = zDate;
647 @ <div class="section">Overview</div>
648 @ <table class="label-value">
649 @ <tr><th>Comment:</th><td class="infoComment">%!W(zComment)</td></tr>
650
651 /* The Download: line */
652 if( g.perm.Zip ){
653 char *zPJ = db_get("short-project-name", 0);
654 char *zUrl;
655 Blob projName;
656 int jj;
657 if( zPJ==0 ) zPJ = db_get("project-name", "unnamed");
658 blob_zero(&projName);
659 blob_append(&projName, zPJ, -1);
660 blob_trim(&projName);
661 zPJ = blob_str(&projName);
662 for(jj=0; zPJ[jj]; jj++){
663 if( (zPJ[jj]>0 && zPJ[jj]<' ') || strchr("\"*/:<>?\\|", zPJ[jj]) ){
664 zPJ[jj] = '_';
665 }
666 }
667 zUrl = mprintf("%R/tarball/%t-%S.tar.gz?name=%s", zPJ, zUuid, zUuid);
668 @ <tr><th>Downloads:</th><td>
669 @ %z(href("%s",zUrl))Tarball</a>
670 @ | %z(href("%R/zip/%t-%S.zip?name=%!S",zPJ,zUuid,zUuid))ZIP archive</a>
671 @ | %z(href("%R/sqlar/%t-%S.sqlar?name=%!S",zPJ,zUuid,zUuid))\
672 @ SQL archive</a></td></tr>
673 fossil_free(zUrl);
674 blob_reset(&projName);
675 }
676
677 @ <tr><th>Timelines:</th><td>
678 @ %z(href("%R/timeline?f=%!S&unhide",zUuid))family</a>
679 if( zParent ){
680 @ | %z(href("%R/timeline?p=%!S&unhide",zUuid))ancestors</a>
681 }
682 if( !isLeaf ){
683 @ | %z(href("%R/timeline?d=%!S&unhide",zUuid))descendants</a>
684 }
685 if( zParent && !isLeaf ){
686 @ | %z(href("%R/timeline?dp=%!S&unhide",zUuid))both</a>
687 }
688 db_prepare(&q2,"SELECT substr(tag.tagname,5) FROM tagxref, tag "
689 " WHERE rid=%d AND tagtype>0 "
690 " AND tag.tagid=tagxref.tagid "
691 " AND +tag.tagname GLOB 'sym-*'", rid);
692 while( db_step(&q2)==SQLITE_ROW ){
693 const char *zTagName = db_column_text(&q2, 0);
694 @ | %z(href("%R/timeline?r=%T&unhide",zTagName))%h(zTagName)</a>
695 }
696 db_finalize(&q2);
697 @ </td></tr>
698
699 @ <tr><th>Files:</th>
700 @ <td>
701 @ %z(href("%R/tree?ci=%!S",zUuid))files</a>
702 @ | %z(href("%R/fileage?name=%!S",zUuid))file ages</a>
703 @ | %z(href("%R/tree?nofiles&type=tree&ci=%!S",zUuid))folders</a>
704 @ </td>
705 @ </tr>
706
707 @ <tr><th>%s(hname_alg(nUuid)):</th><td>%s(zUuid)
708 if( g.perm.Setup ){
709 @ (Record ID: %d(rid))
710 }
711 @ </td></tr>
712 @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
713 hyperlink_to_user(zUser,zDate," on ");
714 hyperlink_to_date(zDate, "</td></tr>");
 
 
 
 
 
 
 
 
 
 
 
 
 
715 if( zEComment ){
 
 
716 @ <tr><th>Original&nbsp;Comment:</th>
717 @ <td class="infoComment">%!W(zComment)</td></tr>
718 }
719 if( fossil_strcmp(zDate, zOrigDate)!=0
720 || fossil_strcmp(zOrigUser, zUser)!=0
721 ){
722 @ <tr><th>Original&nbsp;User&nbsp;&amp;&nbsp;Date:</th><td>
723 hyperlink_to_user(zOrigUser,zOrigDate," on ");
724 hyperlink_to_date(zOrigDate, "</td></tr>");
725 }
726 if( g.perm.Admin ){
727 db_prepare(&q2,
728 "SELECT rcvfrom.ipaddr, user.login, datetime(rcvfrom.mtime)"
729 " FROM blob JOIN rcvfrom USING(rcvid) LEFT JOIN user USING(uid)"
@@ -687,73 +739,21 @@
739 @ <td>%h(zUser) @ %h(zIpAddr) on %s(zDate)</td></tr>
740 }
741 db_finalize(&q2);
742 }
743 if( g.perm.Hyperlink ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
744 @ <tr><th>Other&nbsp;Links:</th>
745 @ <td>
746 @ %z(href("%R/artifact/%!S",zUuid))manifest</a>
 
 
 
747 if( g.perm.Admin ){
748 @ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a>
749 }
750 if( g.anon.Write ){
751 @ | %z(href("%R/ci_edit?r=%!S",zUuid))edit</a>
752 }
753 @ </td>
754 @ </tr>
 
755 }
756 @ </table>
757 }else{
758 style_header("Check-in Information");
759 login_anonymous_available();
@@ -2208,14 +2208,13 @@
2208 @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
2209 if( zTktTitle ){
2210 @<br />%h(zTktTitle)
2211 }
2212 @</td></tr>
2213 @ <tr><th>User&nbsp;&amp;&nbsp;Date:</th><td>
2214 hyperlink_to_user(pTktChng->zUser, zDate, " on ");
2215 hyperlink_to_date(zDate, "</td></tr>");
 
 
2216 @ </table>
2217 free(zDate);
2218 free(zTktTitle);
2219
2220 if( g.perm.ModTkt && modPending ){
2221

Keyboard Shortcuts

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