Fossil SCM

Fix issues with attachments on tickets. In the artifact viewer, do a better job of detecting JPEG images from the content prefix.

drh 2010-05-21 16:21 trunk
Commit 3343450e64978ddf85f002ae24fd286d5f84f2e4
3 files changed +5 -6 +1 +1 -1
+5 -6
--- src/attach.c
+++ src/attach.c
@@ -93,15 +93,12 @@
9393
zSrc = "Deleted from";
9494
}else {
9595
zSrc = "Added to";
9696
}
9797
if( strlen(zTarget)==UUID_SIZE && validate16(zTarget, UUID_SIZE) ){
98
- char zShort[20];
99
- memcpy(zShort, zTarget, 10);
100
- zShort[10] = 0;
10198
@ %s(zSrc) ticket <a href="%s(g.zTop)/tktview?name=%s(zTarget)">
102
- @ %s(zShort)</a>
99
+ @ %S(zTarget)</a>
103100
}else{
104101
@ %s(zSrc) wiki page <a href="%s(g.zTop)/wiki?name=%t(zTarget)">
105102
@ %h(zTarget)</a>
106103
}
107104
}else{
@@ -220,14 +217,16 @@
220217
zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>",
221218
g.zTop, zPage, zPage);
222219
}else{
223220
if( g.okApndTkt==0 || g.okAttach==0 ) login_needed();
224221
if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){
225
- fossil_redirect_home();
222
+ zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag"
223
+ " WHERE tagname GLOB 'tkt-%q*'", zTkt);
224
+ if( zTkt==0 ) fossil_redirect_home();
226225
}
227226
zTarget = zTkt;
228
- zTargetType = mprintf("Ticket <a href=\"%s/tktview?name=%.10s\">%.10s</a>",
227
+ zTargetType = mprintf("Ticket <a href=\"%s/tktview/%S\">%S</a>",
229228
g.zTop, zTkt, zTkt);
230229
}
231230
if( zFrom==0 ) zFrom = mprintf("%s/home", g.zTop);
232231
if( P("cancel") ){
233232
cgi_redirect(zFrom);
234233
--- src/attach.c
+++ src/attach.c
@@ -93,15 +93,12 @@
93 zSrc = "Deleted from";
94 }else {
95 zSrc = "Added to";
96 }
97 if( strlen(zTarget)==UUID_SIZE && validate16(zTarget, UUID_SIZE) ){
98 char zShort[20];
99 memcpy(zShort, zTarget, 10);
100 zShort[10] = 0;
101 @ %s(zSrc) ticket <a href="%s(g.zTop)/tktview?name=%s(zTarget)">
102 @ %s(zShort)</a>
103 }else{
104 @ %s(zSrc) wiki page <a href="%s(g.zTop)/wiki?name=%t(zTarget)">
105 @ %h(zTarget)</a>
106 }
107 }else{
@@ -220,14 +217,16 @@
220 zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>",
221 g.zTop, zPage, zPage);
222 }else{
223 if( g.okApndTkt==0 || g.okAttach==0 ) login_needed();
224 if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){
225 fossil_redirect_home();
 
 
226 }
227 zTarget = zTkt;
228 zTargetType = mprintf("Ticket <a href=\"%s/tktview?name=%.10s\">%.10s</a>",
229 g.zTop, zTkt, zTkt);
230 }
231 if( zFrom==0 ) zFrom = mprintf("%s/home", g.zTop);
232 if( P("cancel") ){
233 cgi_redirect(zFrom);
234
--- src/attach.c
+++ src/attach.c
@@ -93,15 +93,12 @@
93 zSrc = "Deleted from";
94 }else {
95 zSrc = "Added to";
96 }
97 if( strlen(zTarget)==UUID_SIZE && validate16(zTarget, UUID_SIZE) ){
 
 
 
98 @ %s(zSrc) ticket <a href="%s(g.zTop)/tktview?name=%s(zTarget)">
99 @ %S(zTarget)</a>
100 }else{
101 @ %s(zSrc) wiki page <a href="%s(g.zTop)/wiki?name=%t(zTarget)">
102 @ %h(zTarget)</a>
103 }
104 }else{
@@ -220,14 +217,16 @@
217 zTargetType = mprintf("Wiki Page <a href=\"%s/wiki?name=%h\">%h</a>",
218 g.zTop, zPage, zPage);
219 }else{
220 if( g.okApndTkt==0 || g.okAttach==0 ) login_needed();
221 if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){
222 zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag"
223 " WHERE tagname GLOB 'tkt-%q*'", zTkt);
224 if( zTkt==0 ) fossil_redirect_home();
225 }
226 zTarget = zTkt;
227 zTargetType = mprintf("Ticket <a href=\"%s/tktview/%S\">%S</a>",
228 g.zTop, zTkt, zTkt);
229 }
230 if( zFrom==0 ) zFrom = mprintf("%s/home", g.zTop);
231 if( P("cancel") ){
232 cgi_redirect(zFrom);
233
+1
--- src/doc.c
+++ src/doc.c
@@ -51,10 +51,11 @@
5151
} aMime[] = {
5252
{ "GIF87a", 6, "image/gif" },
5353
{ "GIF89a", 6, "image/gif" },
5454
{ "\211PNG\r\n\032\r", 8, "image/png" },
5555
{ "\377\332\377", 3, "image/jpeg" },
56
+ { "\377\330\377", 3, "image/jpeg" },
5657
};
5758
5859
x = (const unsigned char*)blob_buffer(pBlob);
5960
n = blob_size(pBlob);
6061
for(i=0; i<n; i++){
6162
--- src/doc.c
+++ src/doc.c
@@ -51,10 +51,11 @@
51 } aMime[] = {
52 { "GIF87a", 6, "image/gif" },
53 { "GIF89a", 6, "image/gif" },
54 { "\211PNG\r\n\032\r", 8, "image/png" },
55 { "\377\332\377", 3, "image/jpeg" },
 
56 };
57
58 x = (const unsigned char*)blob_buffer(pBlob);
59 n = blob_size(pBlob);
60 for(i=0; i<n; i++){
61
--- src/doc.c
+++ src/doc.c
@@ -51,10 +51,11 @@
51 } aMime[] = {
52 { "GIF87a", 6, "image/gif" },
53 { "GIF89a", 6, "image/gif" },
54 { "\211PNG\r\n\032\r", 8, "image/png" },
55 { "\377\332\377", 3, "image/jpeg" },
56 { "\377\330\377", 3, "image/jpeg" },
57 };
58
59 x = (const unsigned char*)blob_buffer(pBlob);
60 n = blob_size(pBlob);
61 for(i=0; i<n; i++){
62
+1 -1
--- src/tkt.c
+++ src/tkt.c
@@ -313,11 +313,11 @@
313313
style_submenu_element("New Ticket", "Create a new ticket",
314314
"%s/tktnew", g.zTop);
315315
}
316316
if( g.okApndTkt && g.okAttach ){
317317
style_submenu_element("Attach", "Add An Attachment",
318
- "%s/attachadd?tkt=%T&from=%s/tktview%%3fname=%t",
318
+ "%s/attachadd?tkt=%T&from=%s/tktview/%t",
319319
g.zTop, zUuid, g.zTop, zUuid);
320320
}
321321
style_header("View Ticket");
322322
if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
323323
ticket_init();
324324
--- src/tkt.c
+++ src/tkt.c
@@ -313,11 +313,11 @@
313 style_submenu_element("New Ticket", "Create a new ticket",
314 "%s/tktnew", g.zTop);
315 }
316 if( g.okApndTkt && g.okAttach ){
317 style_submenu_element("Attach", "Add An Attachment",
318 "%s/attachadd?tkt=%T&from=%s/tktview%%3fname=%t",
319 g.zTop, zUuid, g.zTop, zUuid);
320 }
321 style_header("View Ticket");
322 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
323 ticket_init();
324
--- src/tkt.c
+++ src/tkt.c
@@ -313,11 +313,11 @@
313 style_submenu_element("New Ticket", "Create a new ticket",
314 "%s/tktnew", g.zTop);
315 }
316 if( g.okApndTkt && g.okAttach ){
317 style_submenu_element("Attach", "Add An Attachment",
318 "%s/attachadd?tkt=%T&from=%s/tktview/%t",
319 g.zTop, zUuid, g.zTop, zUuid);
320 }
321 style_header("View Ticket");
322 if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
323 ticket_init();
324

Keyboard Shortcuts

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