| ︙ | | |
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
-
+
|
/*
** WEBPAGE: attachlist
** List attachments.
**
** tkt=TICKETUUID
** page=WIKIPAGE
**
** At most one of technote=, tkt= or page= are supplied.
** At most one of technote=, tkt= or page= are supplied.
** If none is given, all attachments are listed. If one is given,
** only attachments for the designated technote, ticket or wiki page
** are shown. TECHNOTEUUID and TICKETUUID may be just a prefix of the
** relevant technical note or ticket, in which case all attachments
** of all technical notes or tickets with the prefix will be listed.
*/
void attachlist_page(void){
|
| ︙ | | |
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
-
+
|
zUrlTail = mprintf("page=%t&file=%t", zTarget, zFilename);
}
@ <li><p>
@ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a>
if( moderation_pending(attachid) ){
@ <span class="modpending">*** Awaiting Moderator Approval ***</span>
}
@ <br><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
@ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
@ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br />
if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
if( zComment && zComment[0] ){
@ %!W(zComment)<br />
}
if( zPage==0 && zTkt==0 && zTechNote==0 ){
if( zSrc==0 || zSrc[0]==0 ){
|
| ︙ | | |
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
|
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
|
-
+
|
zTechNote = db_text(0, "SELECT substr(tagname,7) FROM tag"
" WHERE tagname GLOB 'event-%q*'", zTechNote);
if( zTechNote==0) fossil_redirect_home();
}
zTarget = zTechNote;
zTargetType = mprintf("Tech Note <a href=\"%R/technote/%s\">%S</a>",
zTechNote, zTechNote);
}else{
if( g.perm.ApndTkt==0 || g.perm.Attach==0 ){
login_needed(g.anon.ApndTkt && g.anon.Attach);
return;
}
if( !db_exists("SELECT 1 FROM tag WHERE tagname='tkt-%q'", zTkt) ){
zTkt = db_text(0, "SELECT substr(tagname,5) FROM tag"
|
| ︙ | | |
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
|
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
|
-
+
|
if( g.perm.Write && g.perm.WrWiki ){
style_submenu_element("Delete","Delete","%R/ainfo/%s?del", zUuid);
}
}
zDate = db_text(0, "SELECT datetime(%.12f)", pAttach->rDate);
if( P("confirm")
&& ((zTktUuid && g.perm.WrTkt) ||
&& ((zTktUuid && g.perm.WrTkt) ||
(zWikiName && g.perm.WrWiki) ||
(zTNUuid && g.perm.Write && g.perm.WrWiki))
){
int i, n, rid;
char *zDate;
Blob manifest;
Blob cksum;
|
| ︙ | | |
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
|
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
|
-
+
|
}else{
@ <pre>
@ %h(z)
@ </pre>
}
}else if( strncmp(zMime, "image/", 6)==0 ){
int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
@ <i>(file is %d(sz) bytes of image data)</i><br>
@ <i>(file is %d(sz) bytes of image data)</i><br />
@ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img>
style_submenu_element("Image", "Image", "%R/raw/%s?m=%s", zSrc, zMime);
}else{
int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
@ <i>(file is %d(sz) bytes of binary data)</i>
}
@ </blockquote>
|
| ︙ | | |
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
|
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
|
-
+
|
usage("add PAGENAME FILENAME");
}
zPageName = g.argv[3];
rid = db_int(0, "SELECT x.rid FROM tag t, tagxref x"
" WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
" ORDER BY x.mtime DESC LIMIT 1",
zPageName
);
);
if( (pWiki = manifest_get(rid, CFTYPE_WIKI, 0))!=0 ){
zBody = pWiki->zWiki;
}
if( zBody==0 ){
fossil_fatal("wiki page [%s] not found",zPageName);
}
zTarget = zPageName;
|
| ︙ | | |