Fossil SCM

Improvements to hyperlinks showing details of tickets and attachments.

drh 2012-11-24 00:04 UTC ticket-enhancements
Commit ceda22ac804e13e2923c0442e23ffc603533f414
3 files changed +2 -1 +9 -1 +22 -7
+2 -1
--- src/attach.c
+++ src/attach.c
@@ -530,11 +530,12 @@
530530
@ <pre>
531531
@ %h(z)
532532
@ </pre>
533533
}
534534
}else if( strncmp(zMime, "image/", 6)==0 ){
535
- @ <img src="%R/raw?name=%s(zSrc)&m=%s(zMime)"></img>
535
+ @ <img src="%R/raw/%S(zSrc)?m=%s(zMime)"></img>
536
+ style_submenu_element("Image", "Image", "%R/raw/%S?m=%s", zSrc, zMime);
536537
}else{
537538
int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
538539
@ <i>(file is %d(sz) bytes of binary data)</i>
539540
}
540541
@ </blockquote>
541542
--- src/attach.c
+++ src/attach.c
@@ -530,11 +530,12 @@
530 @ <pre>
531 @ %h(z)
532 @ </pre>
533 }
534 }else if( strncmp(zMime, "image/", 6)==0 ){
535 @ <img src="%R/raw?name=%s(zSrc)&m=%s(zMime)"></img>
 
536 }else{
537 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
538 @ <i>(file is %d(sz) bytes of binary data)</i>
539 }
540 @ </blockquote>
541
--- src/attach.c
+++ src/attach.c
@@ -530,11 +530,12 @@
530 @ <pre>
531 @ %h(z)
532 @ </pre>
533 }
534 }else if( strncmp(zMime, "image/", 6)==0 ){
535 @ <img src="%R/raw/%S(zSrc)?m=%s(zMime)"></img>
536 style_submenu_element("Image", "Image", "%R/raw/%S?m=%s", zSrc, zMime);
537 }else{
538 int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
539 @ <i>(file is %d(sz) bytes of binary data)</i>
540 }
541 @ </blockquote>
542
+9 -1
--- src/info.c
+++ src/info.c
@@ -1654,11 +1654,13 @@
16541654
@ <pre>
16551655
@ %h(z)
16561656
@ </pre>
16571657
}
16581658
}else if( strncmp(zMime, "image/", 6)==0 ){
1659
- @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&m=%s(zMime)"></img>
1659
+ @ <img src="%R/raw/%S(zUuid)?m=%s(zMime)" />
1660
+ style_submenu_element("Image", "Image",
1661
+ "%R/raw/%S?m=%s", zUuid, zMime);
16601662
}else{
16611663
@ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
16621664
}
16631665
@ </blockquote>
16641666
}
@@ -1711,10 +1713,16 @@
17111713
style_header("Ticket Change Details");
17121714
style_submenu_element("Raw", "Raw", "%R/artifact/%S", zUuid);
17131715
style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName);
17141716
style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName);
17151717
style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName);
1718
+ if( P("plaintext") ){
1719
+ style_submenu_element("Formatted", "Formatted", "%R/info/%S", zUuid);
1720
+ }else{
1721
+ style_submenu_element("Plaintext", "Plaintext",
1722
+ "%R/info/%S?plaintext", zUuid);
1723
+ }
17161724
17171725
@ <div class="section">Overview</div>
17181726
@ <p><table class="label-value">
17191727
@ <tr><th>Artifact&nbsp;ID:</th>
17201728
@ <td>%z(href("%R/artifact/%s",zUuid))%s(zUuid)</a>
17211729
--- src/info.c
+++ src/info.c
@@ -1654,11 +1654,13 @@
1654 @ <pre>
1655 @ %h(z)
1656 @ </pre>
1657 }
1658 }else if( strncmp(zMime, "image/", 6)==0 ){
1659 @ <img src="%s(g.zTop)/raw?name=%s(zUuid)&m=%s(zMime)"></img>
 
 
1660 }else{
1661 @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
1662 }
1663 @ </blockquote>
1664 }
@@ -1711,10 +1713,16 @@
1711 style_header("Ticket Change Details");
1712 style_submenu_element("Raw", "Raw", "%R/artifact/%S", zUuid);
1713 style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName);
1714 style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName);
1715 style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName);
 
 
 
 
 
 
1716
1717 @ <div class="section">Overview</div>
1718 @ <p><table class="label-value">
1719 @ <tr><th>Artifact&nbsp;ID:</th>
1720 @ <td>%z(href("%R/artifact/%s",zUuid))%s(zUuid)</a>
1721
--- src/info.c
+++ src/info.c
@@ -1654,11 +1654,13 @@
1654 @ <pre>
1655 @ %h(z)
1656 @ </pre>
1657 }
1658 }else if( strncmp(zMime, "image/", 6)==0 ){
1659 @ <img src="%R/raw/%S(zUuid)?m=%s(zMime)" />
1660 style_submenu_element("Image", "Image",
1661 "%R/raw/%S?m=%s", zUuid, zMime);
1662 }else{
1663 @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
1664 }
1665 @ </blockquote>
1666 }
@@ -1711,10 +1713,16 @@
1713 style_header("Ticket Change Details");
1714 style_submenu_element("Raw", "Raw", "%R/artifact/%S", zUuid);
1715 style_submenu_element("History", "History", "%R/tkthistory/%s", zTktName);
1716 style_submenu_element("Page", "Page", "%R/tktview/%t", zTktName);
1717 style_submenu_element("Timeline", "Timeline", "%R/tkttimeline/%t", zTktName);
1718 if( P("plaintext") ){
1719 style_submenu_element("Formatted", "Formatted", "%R/info/%S", zUuid);
1720 }else{
1721 style_submenu_element("Plaintext", "Plaintext",
1722 "%R/info/%S?plaintext", zUuid);
1723 }
1724
1725 @ <div class="section">Overview</div>
1726 @ <p><table class="label-value">
1727 @ <tr><th>Artifact&nbsp;ID:</th>
1728 @ <td>%z(href("%R/artifact/%s",zUuid))%s(zUuid)</a>
1729
+22 -7
--- src/tkt.c
+++ src/tkt.c
@@ -746,10 +746,17 @@
746746
"%s/info/%s", g.zTop, zUuid);
747747
style_submenu_element("Check-ins", "Check-ins",
748748
"%s/tkttimeline?name=%s&y=ci", g.zTop, zUuid);
749749
style_submenu_element("Timeline", "Timeline",
750750
"%s/tkttimeline?name=%s", g.zTop, zUuid);
751
+ if( P("plaintext")!=0 ){
752
+ style_submenu_element("Formatted", "Formatted",
753
+ "%R/tkthistory/%S", zUuid);
754
+ }else{
755
+ style_submenu_element("Plaintext", "Plaintext",
756
+ "%R/tkthistory/%S?plaintext", zUuid);
757
+ }
751758
style_header(zTitle);
752759
free(zTitle);
753760
754761
tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zUuid);
755762
if( tagid==0 ){
@@ -828,24 +835,32 @@
828835
** The pTkt object is a ticket change artifact. Output a detailed
829836
** description of this object.
830837
*/
831838
void ticket_output_change_artifact(Manifest *pTkt){
832839
int i;
840
+ int wikiFlags = WIKI_NOBADLINKS;
841
+ const char *zBlock = "<blockquote>";
842
+ const char *zEnd = "</blockquote>";
843
+ if( P("plaintext")!=0 ){
844
+ wikiFlags |= WIKI_LINKSONLY;
845
+ zBlock = "<blockquote><pre class='verbatim'>";
846
+ zEnd = "</pre></blockquote>";
847
+ }
833848
@ <ol>
834849
for(i=0; i<pTkt->nField; i++){
835850
Blob val;
836851
const char *z;
837852
z = pTkt->aField[i].zName;
838853
blob_set(&val, pTkt->aField[i].zValue);
839854
if( z[0]=='+' ){
840
- @ <li>Appended to %h(&z[1]):<blockquote>
841
- wiki_convert(&val, 0, WIKI_NOBADLINKS);
842
- @ </blockquote></li>
843
- }else if( blob_size(&val)<=50 && contains_newline(&val) ){
844
- @ <li>Change %h(z) to:<blockquote>
845
- wiki_convert(&val, 0, WIKI_NOBADLINKS);
846
- @ </blockquote></li>
855
+ @ <li>Appended to %h(&z[1]):%s(zBlock)
856
+ wiki_convert(&val, 0, wikiFlags);
857
+ @ %s(zEnd)</li>
858
+ }else if( blob_size(&val)>50 || contains_newline(&val) ){
859
+ @ <li>Change %h(z) to:%s(zBlock)
860
+ wiki_convert(&val, 0, wikiFlags);
861
+ @ %s(zEnd)</li>
847862
}else{
848863
@ <li>Change %h(z) to "%h(blob_str(&val))"</li>
849864
}
850865
blob_reset(&val);
851866
}
852867
--- src/tkt.c
+++ src/tkt.c
@@ -746,10 +746,17 @@
746 "%s/info/%s", g.zTop, zUuid);
747 style_submenu_element("Check-ins", "Check-ins",
748 "%s/tkttimeline?name=%s&y=ci", g.zTop, zUuid);
749 style_submenu_element("Timeline", "Timeline",
750 "%s/tkttimeline?name=%s", g.zTop, zUuid);
 
 
 
 
 
 
 
751 style_header(zTitle);
752 free(zTitle);
753
754 tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zUuid);
755 if( tagid==0 ){
@@ -828,24 +835,32 @@
828 ** The pTkt object is a ticket change artifact. Output a detailed
829 ** description of this object.
830 */
831 void ticket_output_change_artifact(Manifest *pTkt){
832 int i;
 
 
 
 
 
 
 
 
833 @ <ol>
834 for(i=0; i<pTkt->nField; i++){
835 Blob val;
836 const char *z;
837 z = pTkt->aField[i].zName;
838 blob_set(&val, pTkt->aField[i].zValue);
839 if( z[0]=='+' ){
840 @ <li>Appended to %h(&z[1]):<blockquote>
841 wiki_convert(&val, 0, WIKI_NOBADLINKS);
842 @ </blockquote></li>
843 }else if( blob_size(&val)<=50 && contains_newline(&val) ){
844 @ <li>Change %h(z) to:<blockquote>
845 wiki_convert(&val, 0, WIKI_NOBADLINKS);
846 @ </blockquote></li>
847 }else{
848 @ <li>Change %h(z) to "%h(blob_str(&val))"</li>
849 }
850 blob_reset(&val);
851 }
852
--- src/tkt.c
+++ src/tkt.c
@@ -746,10 +746,17 @@
746 "%s/info/%s", g.zTop, zUuid);
747 style_submenu_element("Check-ins", "Check-ins",
748 "%s/tkttimeline?name=%s&y=ci", g.zTop, zUuid);
749 style_submenu_element("Timeline", "Timeline",
750 "%s/tkttimeline?name=%s", g.zTop, zUuid);
751 if( P("plaintext")!=0 ){
752 style_submenu_element("Formatted", "Formatted",
753 "%R/tkthistory/%S", zUuid);
754 }else{
755 style_submenu_element("Plaintext", "Plaintext",
756 "%R/tkthistory/%S?plaintext", zUuid);
757 }
758 style_header(zTitle);
759 free(zTitle);
760
761 tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname GLOB 'tkt-%q*'",zUuid);
762 if( tagid==0 ){
@@ -828,24 +835,32 @@
835 ** The pTkt object is a ticket change artifact. Output a detailed
836 ** description of this object.
837 */
838 void ticket_output_change_artifact(Manifest *pTkt){
839 int i;
840 int wikiFlags = WIKI_NOBADLINKS;
841 const char *zBlock = "<blockquote>";
842 const char *zEnd = "</blockquote>";
843 if( P("plaintext")!=0 ){
844 wikiFlags |= WIKI_LINKSONLY;
845 zBlock = "<blockquote><pre class='verbatim'>";
846 zEnd = "</pre></blockquote>";
847 }
848 @ <ol>
849 for(i=0; i<pTkt->nField; i++){
850 Blob val;
851 const char *z;
852 z = pTkt->aField[i].zName;
853 blob_set(&val, pTkt->aField[i].zValue);
854 if( z[0]=='+' ){
855 @ <li>Appended to %h(&z[1]):%s(zBlock)
856 wiki_convert(&val, 0, wikiFlags);
857 @ %s(zEnd)</li>
858 }else if( blob_size(&val)>50 || contains_newline(&val) ){
859 @ <li>Change %h(z) to:%s(zBlock)
860 wiki_convert(&val, 0, wikiFlags);
861 @ %s(zEnd)</li>
862 }else{
863 @ <li>Change %h(z) to "%h(blob_str(&val))"</li>
864 }
865 blob_reset(&val);
866 }
867

Keyboard Shortcuts

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