@@ -322,10 +322,16 @@
322 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.perm.ApndTkt && g.perm.Attach ){
323 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_submenu_element("Attach", "Add An Attachment",
324 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"%s/attachadd?tkt=%T&from=%s/tktview/%t",
325 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zTop, zUuid, g.zTop, zUuid);
326 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( P("plaintext") ){
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Formatted", "Formatted", "%R/tktview/%S", zUuid);
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_submenu_element("Plaintext", "Plaintext",
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "%R/tktview/%S?plaintext", zUuid);
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
327 333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("View Ticket");
328 334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
329 335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ticket_init();
330 336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
initializeVariablesFromCGI();
331 337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
initializeVariablesFromDb();
@@ -735,10 +741,11 @@
735 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void tkthistory_page(void){
736 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
737 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTitle;
738 744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUuid;
739 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tagid;
746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int nChng = 0;
740 747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
741 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
742 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.Hyperlink || !g.perm.RdTkt ){ login_needed(); return; }
743 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zUuid = PD("name","");
744 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTitle = mprintf("History Of Ticket %h", zUuid);
@@ -772,11 +779,11 @@
772 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" UNION "
773 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT datetime(mtime,'localtime'), attachid, uuid, src, filename, user"
774 781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM attachment, blob"
775 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE target=(SELECT substr(tagname,5) FROM tag WHERE tagid=%d)"
776 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND blob.rid=attachid"
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY 1 DESC",
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY 1",
778 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid, tagid
779 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
780 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
781 788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Manifest *pTicket;
782 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char zShort[12];
@@ -784,40 +791,48 @@
784 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid = db_column_int(&q, 1);
785 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zChngUuid = db_column_text(&q, 2);
786 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFile = db_column_text(&q, 4);
787 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memcpy(zShort, zChngUuid, 10);
788 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zShort[10] = 0;
796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nChng==0 ){
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <ol>
798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nChng++;
789 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zFile!=0 ){
790 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zSrc = db_column_text(&q, 3);
791 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUser = db_column_text(&q, 5);
792 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zSrc==0 || zSrc[0]==0 ){
793 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@
794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <p>Delete attachment "%h(zFile)"
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <li><p>Delete attachment "%h(zFile)"
795 806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
796 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <p>Add attachment "%h(zFile)"
808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <li><p>Add attachment
809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ "%z(href("%R/artifact/%S",zSrc))%h(zFile)</a>"
798 810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
799 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ [%z(href("%R/artifact/%T",zChngUuid))%s(zShort)</a>]
800 812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ (rid %d(rid)) by
801 813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hyperlink_to_user(zUser,zDate," on");
802 814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hyperlink_to_date(zDate, ".</p>");
803 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
804 816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pTicket = manifest_get(rid, CFTYPE_TICKET);
805 817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pTicket ){
806 818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@
807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <p>Ticket change
819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <li><p>Ticket change
808 820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ [%z(href("%R/artifact/%T",zChngUuid))%s(zShort)</a>]
809 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ (rid %d(rid)) by
810 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hyperlink_to_user(pTicket->zUser,zDate," on");
811 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
hyperlink_to_date(zDate, ":");
812 824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </p>
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ticket_output_change_artifact(pTicket);
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ticket_output_change_artifact(pTicket, "a");
814 826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
815 827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
manifest_destroy(pTicket);
816 828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
817 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
818 830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( nChng ){
832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </ol>
833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
819 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_footer();
820 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
821 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
822 837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
823 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return TRUE if the given BLOB contains a newline character.
@@ -833,21 +848,22 @@
833 848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
834 849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
835 850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** The pTkt object is a ticket change artifact. Output a detailed
836 851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** description of this object.
837 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- void ticket_output_change_artifact(Manifest *pTkt){
853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void ticket_output_change_artifact(Manifest *pTkt, const char *zListType){
839 854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
840 855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int wikiFlags = WIKI_NOBADLINKS;
841 856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zBlock = "<blockquote>";
842 857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zEnd = "</blockquote>";
843 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( P("plaintext")!=0 ){
844 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
wikiFlags |= WIKI_LINKSONLY;
845 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zBlock = "<blockquote><pre class='verbatim'>";
846 861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zEnd = "</pre></blockquote>";
847 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <ol>
863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zListType==0 ) zListType = "1";
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <ol type="%s(zListType)">
849 865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<pTkt->nField; i++){
850 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Blob val;
851 867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *z;
852 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z = pTkt->aField[i].zName;
853 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_set(&val, pTkt->aField[i].zValue);
@@ -1057,21 +1073,23 @@
1057 1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int tagid;
1058 1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1059 1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if ( i != g.argc ){
1060 1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("no other parameters expected to %s!",g.argv[2]);
1061 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zTktUuid);
1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",
1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTktUuid);
1063 1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( tagid==0 ){
1064 1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("no such ticket %h", zTktUuid);
1065 1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1066 1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q,
1067 1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"SELECT datetime(mtime,'localtime'), objid, uuid, NULL, NULL, NULL"
1068 1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM event, blob"
1069 1086 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE objid IN (SELECT rid FROM tagxref WHERE tagid=%d)"
1070 1087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND blob.rid=event.objid"
1071 1088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" UNION "
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "SELECT datetime(mtime,'localtime'), attachid, uuid, src, filename, user"
1089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT datetime(mtime,'localtime'), attachid, uuid, src, "
1090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " filename, user"
1073 1091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM attachment, blob"
1074 1092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" WHERE target=(SELECT substr(tagname,5) FROM tag WHERE tagid=%d)"
1075 1093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" AND blob.rid=attachid"
1076 1094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ORDER BY 1 DESC",
1077 1095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tagid, tagid
1078 1096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!