Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Always put [..] marks around SHA1 hyperlinks. For unknown SHA1 numbers, enclose in <span class="brokenlink">. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
a99e9c91648c0a8fa00bbf6a4b8d2c56 |
| User & Date: | drh 2011-03-23 16:16:03.738 |
References
|
2011-03-23
| ||
| 17:24 | Fix to the prior check-in ([a99e9c9164]) so that ticket hyperlinks are displayed correctly. ... (check-in: 733361a55e user: drh tags: trunk) | |
Context
|
2011-03-23
| ||
| 17:24 | Fix to the prior check-in ([a99e9c9164]) so that ticket hyperlinks are displayed correctly. ... (check-in: 733361a55e user: drh tags: trunk) | |
| 16:16 | Always put [..] marks around SHA1 hyperlinks. For unknown SHA1 numbers, enclose in <span class="brokenlink">. ... (check-in: a99e9c9164 user: drh tags: trunk) | |
| 15:13 | Do a better response in the redirector if no matching artifact is found. ... (check-in: dbc2098a6a user: drh tags: trunk) | |
Changes
Changes to src/style.c.
| ︙ | ︙ | |||
732 733 734 735 736 737 738 739 740 741 742 743 744 745 |
{ "p.noMoreShun",
"format for artifact lines, no longer shunned",
@ color: blue;
},
{ "p.shunned",
"format for artifact lines beeing shunned",
@ color: blue;
},
{ 0,
0,
0
}
};
| > > > > | 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 |
{ "p.noMoreShun",
"format for artifact lines, no longer shunned",
@ color: blue;
},
{ "p.shunned",
"format for artifact lines beeing shunned",
@ color: blue;
},
{ "span.brokenlink",
"a broken hyperlink",
@ color: red;
},
{ 0,
0,
0
}
};
|
| ︙ | ︙ |
Changes to src/wikiformat.c.
| ︙ | ︙ | |||
937 938 939 940 941 942 943 944 945 946 947 948 949 950 |
*/
static int is_valid_uuid(const char *z){
int n = strlen(z);
if( n<4 || n>UUID_SIZE ) return 0;
if( !validate16(z, n) ) return 0;
return 1;
}
/*
** zTarget is guaranteed to be a UUID. It might be the UUID of a ticket.
** If it is, store in *pClosed a true or false depending on whether or not
** the ticket is closed and return true. If zTarget
** is not the UUID of a ticket, return false.
*/
| > > > > > > > > > > > > > > > > | 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 |
*/
static int is_valid_uuid(const char *z){
int n = strlen(z);
if( n<4 || n>UUID_SIZE ) return 0;
if( !validate16(z, n) ) return 0;
return 1;
}
/*
** Return TRUE if a UUID corresponds to an artifact in this
** repository.
*/
static int in_this_repo(const char *zUuid){
static Stmt q;
int rc;
db_static_prepare(&q,
"SELECT 1 FROM blob WHERE uuid>=:u AND +uuid GLOB (:u || '*')"
);
db_bind_text(&q, ":u", zUuid);
rc = db_step(&q);
db_reset(&q);
return rc==SQLITE_ROW;
}
/*
** zTarget is guaranteed to be a UUID. It might be the UUID of a ticket.
** If it is, store in *pClosed a true or false depending on whether or not
** the ticket is closed and return true. If zTarget
** is not the UUID of a ticket, return false.
*/
|
| ︙ | ︙ | |||
1038 1039 1040 1041 1042 1043 1044 |
if( 1 /* g.okHistory */ ){
blob_appendf(p->pOut, "<a href=\"%h\">", zTarget);
}else{
zTerm = "";
}
}else if( is_valid_uuid(zTarget) ){
int isClosed = 0;
| > > > | | | | | | > > | | > | | 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 |
if( 1 /* g.okHistory */ ){
blob_appendf(p->pOut, "<a href=\"%h\">", zTarget);
}else{
zTerm = "";
}
}else if( is_valid_uuid(zTarget) ){
int isClosed = 0;
if( !in_this_repo(zTarget) ){
blob_appendf(p->pOut, "<span class=\"brokenlink\">[", zTarget);
zTerm = "]</span>";
}else if( is_ticket(zTarget, &isClosed) ){
/* Special display processing for tickets. Display the hyperlink
** as crossed out if the ticket is closed.
*/
if( isClosed ){
if( g.okHistory ){
blob_appendf(p->pOut,
"<a href=\"%s/info/%s\"><span class=\"wikiTagCancelled\">[",
g.zTop, zTarget
);
zTerm = "]</span></a>";
}else{
blob_appendf(p->pOut,"<span class=\"wikiTagCancelled\">[");
zTerm = "]</span>";
}
}else{
if( g.okHistory ){
blob_appendf(p->pOut,"<a href=\"%s/info/%s\">[",
g.zTop, zTarget
);
zTerm = "]</a>";
}else{
blob_appendf(p->pOut, "[");
zTerm = "]";
}
}
}else if( g.okHistory ){
blob_appendf(p->pOut, "<a href=\"%s/info/%s\">[", g.zTop, zTarget);
zTerm = "]</a>";
}
}else if( strlen(zTarget)>=10 && fossil_isdigit(zTarget[0]) && zTarget[4]=='-'
&& db_int(0, "SELECT datetime(%Q) NOT NULL", zTarget) ){
blob_appendf(p->pOut, "<a href=\"%s/timeline?c=%T\">", g.zTop, zTarget);
}else if( strncmp(zTarget, "wiki:", 5)==0
&& wiki_name_is_wellformed((const unsigned char*)zTarget) ){
zTarget += 5;
blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
}else if( wiki_name_is_wellformed((const unsigned char *)zTarget) ){
blob_appendf(p->pOut, "<a href=\"%s/wiki?name=%T\">", g.zTop, zTarget);
}else{
blob_appendf(p->pOut, "<span class=\"brokenlink\">[%h]</span>", zTarget);
zTerm = "";
}
assert( strlen(zTerm)<nClose );
sqlite3_snprintf(nClose, zClose, "%s", zTerm);
}
/*
|
| ︙ | ︙ |