Fossil SCM

Make use of new attachment target type detection to slightly simplify how /artifacts renders attachments.

stephan 2026-05-22 18:10 UTC forum-attachments
Commit efe251332943eb7f39dbeba1fb67e925e7f13786f810a0b13266855faedde88e
1 file changed +9 -16
+9 -16
--- src/info.c
+++ src/info.c
@@ -1871,46 +1871,39 @@
18711871
@ Also attachment "%h(zFilename)" to
18721872
}else{
18731873
@ Attachment "%h(zFilename)" to
18741874
}
18751875
objType |= OBJTYPE_ATTACHMENT;
1876
- if( fossil_is_artifact_hash(zTarget) ){
1877
- if( forumpost_head_rid2(zTarget)>0 ){
1876
+ switch( attachment_target_type(zTarget) ){
1877
+ case CFTYPE_FORUM:
18781878
if( g.perm.Hyperlink && g.anon.RdForum ){
18791879
@ forum post [%z(href("%R/forumpost/%!S",zTarget))%S(zTarget)</a>]
18801880
}else{
18811881
@ forum post [%S(zTarget)]
18821882
}
1883
- }else if ( db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'",
1884
- zTarget)
1885
- ){
1883
+ break;
1884
+ case CFTYPE_TICKET:
18861885
if( g.perm.Hyperlink && g.anon.RdTkt ){
18871886
@ ticket [%z(href("%R/tktview?name=%!S",zTarget))%S(zTarget)</a>]
18881887
}else{
18891888
@ ticket [%S(zTarget)]
18901889
}
1891
- }else if( db_exists("SELECT 1 FROM tag WHERE tagname='event-%q'",
1892
- zTarget)
1893
- ){
1890
+ break;
1891
+ case CFTYPE_EVENT:
18941892
if( g.perm.Hyperlink && g.anon.RdWiki ){
18951893
@ tech note [%z(href("%R/technote/%h",zTarget))%S(zTarget)</a>]
18961894
}else{
18971895
@ tech note [%S(zTarget)]
18981896
}
1899
- }else{
1897
+ break;
1898
+ case CFTYPE_WIKI:
1899
+ default /* historical behavior - assume wiki */:
19001900
if( g.perm.Hyperlink && g.anon.RdWiki ){
19011901
@ wiki page [%z(href("%R/wiki?name=%t",zTarget))%h(zTarget)</a>]
19021902
}else{
19031903
@ wiki page [%h(zTarget)]
19041904
}
1905
- }
1906
- }else{
1907
- if( g.perm.Hyperlink && g.anon.RdWiki ){
1908
- @ wiki page [%z(href("%R/wiki?name=%t",zTarget))%h(zTarget)</a>]
1909
- }else{
1910
- @ wiki page [%h(zTarget)]
1911
- }
19121905
}
19131906
@ added by
19141907
hyperlink_to_user(zUser,zDate," on");
19151908
hyperlink_to_date(zDate,".");
19161909
cnt++;
19171910
--- src/info.c
+++ src/info.c
@@ -1871,46 +1871,39 @@
1871 @ Also attachment "%h(zFilename)" to
1872 }else{
1873 @ Attachment "%h(zFilename)" to
1874 }
1875 objType |= OBJTYPE_ATTACHMENT;
1876 if( fossil_is_artifact_hash(zTarget) ){
1877 if( forumpost_head_rid2(zTarget)>0 ){
1878 if( g.perm.Hyperlink && g.anon.RdForum ){
1879 @ forum post [%z(href("%R/forumpost/%!S",zTarget))%S(zTarget)</a>]
1880 }else{
1881 @ forum post [%S(zTarget)]
1882 }
1883 }else if ( db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'",
1884 zTarget)
1885 ){
1886 if( g.perm.Hyperlink && g.anon.RdTkt ){
1887 @ ticket [%z(href("%R/tktview?name=%!S",zTarget))%S(zTarget)</a>]
1888 }else{
1889 @ ticket [%S(zTarget)]
1890 }
1891 }else if( db_exists("SELECT 1 FROM tag WHERE tagname='event-%q'",
1892 zTarget)
1893 ){
1894 if( g.perm.Hyperlink && g.anon.RdWiki ){
1895 @ tech note [%z(href("%R/technote/%h",zTarget))%S(zTarget)</a>]
1896 }else{
1897 @ tech note [%S(zTarget)]
1898 }
1899 }else{
 
 
1900 if( g.perm.Hyperlink && g.anon.RdWiki ){
1901 @ wiki page [%z(href("%R/wiki?name=%t",zTarget))%h(zTarget)</a>]
1902 }else{
1903 @ wiki page [%h(zTarget)]
1904 }
1905 }
1906 }else{
1907 if( g.perm.Hyperlink && g.anon.RdWiki ){
1908 @ wiki page [%z(href("%R/wiki?name=%t",zTarget))%h(zTarget)</a>]
1909 }else{
1910 @ wiki page [%h(zTarget)]
1911 }
1912 }
1913 @ added by
1914 hyperlink_to_user(zUser,zDate," on");
1915 hyperlink_to_date(zDate,".");
1916 cnt++;
1917
--- src/info.c
+++ src/info.c
@@ -1871,46 +1871,39 @@
1871 @ Also attachment "%h(zFilename)" to
1872 }else{
1873 @ Attachment "%h(zFilename)" to
1874 }
1875 objType |= OBJTYPE_ATTACHMENT;
1876 switch( attachment_target_type(zTarget) ){
1877 case CFTYPE_FORUM:
1878 if( g.perm.Hyperlink && g.anon.RdForum ){
1879 @ forum post [%z(href("%R/forumpost/%!S",zTarget))%S(zTarget)</a>]
1880 }else{
1881 @ forum post [%S(zTarget)]
1882 }
1883 break;
1884 case CFTYPE_TICKET:
 
1885 if( g.perm.Hyperlink && g.anon.RdTkt ){
1886 @ ticket [%z(href("%R/tktview?name=%!S",zTarget))%S(zTarget)</a>]
1887 }else{
1888 @ ticket [%S(zTarget)]
1889 }
1890 break;
1891 case CFTYPE_EVENT:
 
1892 if( g.perm.Hyperlink && g.anon.RdWiki ){
1893 @ tech note [%z(href("%R/technote/%h",zTarget))%S(zTarget)</a>]
1894 }else{
1895 @ tech note [%S(zTarget)]
1896 }
1897 break;
1898 case CFTYPE_WIKI:
1899 default /* historical behavior - assume wiki */:
1900 if( g.perm.Hyperlink && g.anon.RdWiki ){
1901 @ wiki page [%z(href("%R/wiki?name=%t",zTarget))%h(zTarget)</a>]
1902 }else{
1903 @ wiki page [%h(zTarget)]
1904 }
 
 
 
 
 
 
 
1905 }
1906 @ added by
1907 hyperlink_to_user(zUser,zDate," on");
1908 hyperlink_to_date(zDate,".");
1909 cnt++;
1910

Keyboard Shortcuts

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