Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | file timeline/attach pages HTML-validated |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | wolfgangFormat2CSS |
| Files: | files | file ages | folders |
| SHA1: |
cd2f91d31a595c8b7e19e76e39b5f6d7 |
| User & Date: | wolfgang 2010-09-12 10:42:37.000 |
Context
|
2010-09-12
| ||
| 12:49 | corrected some & chars in hyperlinks and added missing quotes in attribute values ... (check-in: 214d2faf6d user: wolfgang tags: wolfgangFormat2CSS) | |
| 10:42 | file timeline/attach pages HTML-validated ... (check-in: cd2f91d31a user: wolfgang tags: wolfgangFormat2CSS) | |
| 09:20 | wikiformat list end p tags ... (check-in: 173bfe1726 user: wolfgang tags: wolfgangFormat2CSS) | |
Changes
Changes to src/finfo.c.
| ︙ | ︙ | |||
134 135 136 137 138 139 140 | blob_zero(&title); blob_appendf(&title, "History of "); hyperlinked_path(zFilename, &title); @ <h2>%b(&title)</h2> blob_reset(&title); pGraph = graph_init(); @ <div id="canvas" style="position:relative;width:1px;height:1px;"></div> | | | 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
blob_zero(&title);
blob_appendf(&title, "History of ");
hyperlinked_path(zFilename, &title);
@ <h2>%b(&title)</h2>
blob_reset(&title);
pGraph = graph_init();
@ <div id="canvas" style="position:relative;width:1px;height:1px;"></div>
@ <table class="timelineTable">
while( db_step(&q)==SQLITE_ROW ){
const char *zDate = db_column_text(&q, 0);
const char *zCom = db_column_text(&q, 1);
const char *zUser = db_column_text(&q, 2);
int fpid = db_column_int(&q, 3);
int frid = db_column_int(&q, 4);
const char *zPUuid = db_column_text(&q, 5);
|
| ︙ | ︙ | |||
160 161 162 163 164 165 166 |
sprintf(zPrevDate, "%.10s", zDate);
@ <tr><td>
@ <div class="divider">%s(zPrevDate)</div>
@ </td></tr>
}
memcpy(zTime, &zDate[11], 5);
zTime[5] = 0;
| | | | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
sprintf(zPrevDate, "%.10s", zDate);
@ <tr><td>
@ <div class="divider">%s(zPrevDate)</div>
@ </td></tr>
}
memcpy(zTime, &zDate[11], 5);
zTime[5] = 0;
@ <tr><td class="timelineTime">
@ <a href="%s(g.zTop)/timeline?c=%t(zDate)">%s(zTime)</a></td>
@ <td class="timelineGraph"><div id="m%d(gidx)"></div></td>
if( zBgClr && zBgClr[0] ){
@ <td class="timelineTableCell" style="background-color: %h(zBgClr);">
}else{
@ <td class="timelineTableCell">
}
sqlite3_snprintf(sizeof(zShort), zShort, "%.10s", zUuid);
sqlite3_snprintf(sizeof(zShortCkin), zShortCkin, "%.10s", zCkin);
if( zUuid ){
if( g.okHistory ){
@ <a href="%s(g.zTop)/artifact/%s(zUuid)">[%S(zUuid)]</a>
}else{
|
| ︙ | ︙ | |||
191 192 193 194 195 196 197 |
if( g.okHistory && zUuid ){
if( fpid ){
@ <a href="%s(g.zTop)/fdiff?v1=%s(zPUuid)&v2=%s(zUuid)">[diff]</a>
}
@ <a href="%s(g.zTop)/annotate?checkin=%S(zCkin)&filename=%h(zFilename)">
@ [annotate]</a>
}
| | | | 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
if( g.okHistory && zUuid ){
if( fpid ){
@ <a href="%s(g.zTop)/fdiff?v1=%s(zPUuid)&v2=%s(zUuid)">[diff]</a>
}
@ <a href="%s(g.zTop)/annotate?checkin=%S(zCkin)&filename=%h(zFilename)">
@ [annotate]</a>
}
@ </td></tr>
}
db_finalize(&q);
if( pGraph ){
graph_finish(pGraph, 1);
if( pGraph->nErr ){
graph_free(pGraph);
pGraph = 0;
}else{
@ <tr><td></td><td><div style="width:%d(pGraph->mxRail*20+30)px;"></div></td></tr>
}
}
@ </table>
timeline_output_graph_javascript(pGraph);
style_footer();
}
|
Changes to src/info.c.
| ︙ | ︙ | |||
220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
}else{
@ added by
}
hyperlink_to_uuid(zSrcUuid);
@ on
hyperlink_to_date(zDate,0);
}
}
db_finalize(&q);
if( cnt ){
@ </ul>
}
}
| > | 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
}else{
@ added by
}
hyperlink_to_uuid(zSrcUuid);
@ on
hyperlink_to_date(zDate,0);
}
@ </li>
}
db_finalize(&q);
if( cnt ){
@ </ul>
}
}
|
| ︙ | ︙ | |||
274 275 276 277 278 279 280 |
}
}else if( zOld && zNew ){
@ <p>Modified <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ from <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
@ to <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)].</a>
if( !showDiff ){
@
| | > | 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
}
}else if( zOld && zNew ){
@ <p>Modified <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ from <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a>
@ to <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)].</a>
if( !showDiff ){
@
@ <a href="%s(g.zTop)/fdiff?v1=%S(zOld)&v2=%S(zNew)">[diff]</a>
}else{
int rid1 = uuid_to_rid(zOld, 0);
int rid2 = uuid_to_rid(zNew, 0);
@ <blockquote><pre>
append_diff(rid1, rid2);
@ </pre></blockquote>
}
@ </p>
}else if( zOld ){
@ <p>Deleted <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zOld)">[%S(zOld)]</a></p>
}else{
@ <p>Added <a href="%s(g.zTop)/finfo?name=%T(zName)">%h(zName)</a>
@ version <a href="%s(g.zTop)/artifact/%s(zNew)">[%S(zNew)]</a></p>
}
|
| ︙ | ︙ | |||
352 353 354 355 356 357 358 |
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
zUser = db_column_text(&q, 2);
zComment = db_column_text(&q, 3);
zDate = db_column_text(&q,1);
@ <div class="section">Overview</div>
| | | 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 |
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
zUser = db_column_text(&q, 2);
zComment = db_column_text(&q, 3);
zDate = db_column_text(&q,1);
@ <div class="section">Overview</div>
@ <table class="label-value">
@ <tr><th>SHA1 Hash:</th><td>%s(zUuid)
if( g.okSetup ){
@ (Record ID: %d(rid))
}
@ </td></tr>
@ <tr><th>Date:</th><td>
hyperlink_to_date(zDate, "</td></tr>");
|
| ︙ | ︙ | |||
397 398 399 400 401 402 403 |
db_finalize(&q);
}
if( g.okHistory ){
const char *zProjName = db_get("project-name", "unnamed");
@ <tr><th>Timelines:</th><td>
@ <a href="%s(g.zBaseURL)/timeline?p=%S(zUuid)">ancestors</a>
@ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)">descendants</a>
| | | 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 |
db_finalize(&q);
}
if( g.okHistory ){
const char *zProjName = db_get("project-name", "unnamed");
@ <tr><th>Timelines:</th><td>
@ <a href="%s(g.zBaseURL)/timeline?p=%S(zUuid)">ancestors</a>
@ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)">descendants</a>
@ | <a href="%s(g.zBaseURL)/timeline?d=%S(zUuid)&p=%S(zUuid)">both</a>
db_prepare(&q, "SELECT substr(tag.tagname,5) FROM tagxref, tag "
" WHERE rid=%d AND tagtype>0 "
" AND tag.tagid=tagxref.tagid "
" AND +tag.tagname GLOB 'sym-*'", rid);
while( db_step(&q)==SQLITE_ROW ){
const char *zTagName = db_column_text(&q, 0);
@ | <a href="%s(g.zTop)/timeline?r=%T(zTagName)">%h(zTagName)</a>
|
| ︙ | ︙ | |||
422 423 424 425 426 427 428 |
@ | <a href="%s(g.zTop)/artifact/%S(zUuid)">manifest</a>
if( g.okWrite ){
@ | <a href="%s(g.zTop)/ci_edit?r=%S(zUuid)">edit</a>
}
@ </td>
@ </tr>
}
| | | 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 |
@ | <a href="%s(g.zTop)/artifact/%S(zUuid)">manifest</a>
if( g.okWrite ){
@ | <a href="%s(g.zTop)/ci_edit?r=%S(zUuid)">edit</a>
}
@ </td>
@ </tr>
}
@ </table>
}else{
style_header("Check-in Information");
login_anonymous_available();
}
db_finalize(&q);
showTags(rid, "");
@ <div class="section">Changes</div>
|
| ︙ | ︙ | |||
878 879 880 881 882 883 884 |
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
v1 = name_to_rid_www("v1");
v2 = name_to_rid_www("v2");
if( v1==0 || v2==0 ) fossil_redirect_home();
style_header("Diff");
@ <h2>Differences From:</h2>
| | | | | | 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 |
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
v1 = name_to_rid_www("v1");
v2 = name_to_rid_www("v2");
if( v1==0 || v2==0 ) fossil_redirect_home();
style_header("Diff");
@ <h2>Differences From:</h2>
@ <blockquote><p>
object_description(v1, 1, 0);
@ </p></blockquote>
@ <h2>To:</h2>
@ <blockquote><p>
object_description(v2, 1, 0);
@ </p></blockquote>
@ <hr />
@ <blockquote><pre>
content_get(v1, &c1);
content_get(v2, &c2);
blob_zero(&diff);
text_diff(&c1, &c2, &diff, 4, 1);
blob_reset(&c1);
|
| ︙ | ︙ | |||
1002 1003 1004 1005 1006 1007 1008 |
style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun",
g.zTop, zUuid);
}
}
style_header("Hex Artifact Content");
zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid);
@ <h2>Artifact %s(zUuid):</h2>
| | | | 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 |
style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun",
g.zTop, zUuid);
}
}
style_header("Hex Artifact Content");
zUuid = db_text("?","SELECT uuid FROM blob WHERE rid=%d", rid);
@ <h2>Artifact %s(zUuid):</h2>
@ <blockquote><p>
blob_zero(&downloadName);
object_description(rid, 0, &downloadName);
style_submenu_element("Download", "Download",
"%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
@ </p></blockquote>
@ <hr />
content_get(rid, &content);
@ <blockquote><pre>
hexdump(&content);
@ </pre></blockquote>
style_footer();
}
|
| ︙ | ︙ | |||
1084 1085 1086 1087 1088 1089 1090 |
style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun",
g.zTop, zUuid);
}
}
style_header("Artifact Content");
zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid);
@ <h2>Artifact %s(zUuid)</h2>
| | | 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 |
style_submenu_element("Shun","Shun", "%s/shun?shun=%s#addshun",
g.zTop, zUuid);
}
}
style_header("Artifact Content");
zUuid = db_text("?", "SELECT uuid FROM blob WHERE rid=%d", rid);
@ <h2>Artifact %s(zUuid)</h2>
@ <blockquote><p>
blob_zero(&downloadName);
object_description(rid, 0, &downloadName);
style_submenu_element("Download", "Download",
"%s/raw/%T?name=%s", g.zTop, blob_str(&downloadName), zUuid);
zMime = mimetype_from_name(blob_str(&downloadName));
if( zMime ){
if( strcmp(zMime, "text/html")==0 ){
|
| ︙ | ︙ | |||
1111 1112 1113 1114 1115 1116 1117 |
}else{
renderAsWiki = 1;
style_submenu_element("Text", "Text",
"%s/artifact?name=%s&txt=1", g.zTop, zUuid);
}
}
}
| | | 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 |
}else{
renderAsWiki = 1;
style_submenu_element("Text", "Text",
"%s/artifact?name=%s&txt=1", g.zTop, zUuid);
}
}
}
@ </p></blockquote>
@ <hr />
content_get(rid, &content);
if( renderAsWiki ){
wiki_convert(&content, 0, 0);
}else if( renderAsHtml ){
@ <div>
cgi_append_content(blob_buffer(&content), blob_size(&content));
|
| ︙ | ︙ |
Changes to src/report.c.
| ︙ | ︙ | |||
275 276 277 278 279 280 281 | } zTitle = db_column_text(&q, 0); zSQL = db_column_text(&q, 1); zOwner = db_column_text(&q, 2); zClrKey = db_column_text(&q, 3); @ <table cellpadding=0 cellspacing=0 border=0> @ <tr><td valign="top" align="right">Title:</td><td width=15></td> | | | | 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | } zTitle = db_column_text(&q, 0); zSQL = db_column_text(&q, 1); zOwner = db_column_text(&q, 2); zClrKey = db_column_text(&q, 3); @ <table cellpadding=0 cellspacing=0 border=0> @ <tr><td valign="top" align="right">Title:</td><td width=15></td> @ <td colspan="3">%h(zTitle)</td></tr> @ <tr><td valign="top" align="right">Owner:</td><td></td> @ <td colspan="3">%h(zOwner)</td></tr> @ <tr><td valign="top" align="right">SQL:</td><td></td> @ <td valign="top"><pre> @ %h(zSQL) @ </pre></td> @ <td width=15></td><td valign="top"> output_color_key(zClrKey, 0, "border=0 cellspacing=0 cellpadding=3"); @ </td> |
| ︙ | ︙ |
Changes to src/style.c.
| ︙ | ︙ | |||
449 450 451 452 453 454 455 456 457 458 459 460 461 462 |
@ font-weight: bold;
},
{ "td.timelineTime",
"the format for the timeline time display",
@ vertical-align: top;
@ text-align: right;
},
{ "a.tagLink",
"the format for the tag links",
@
},
{ "span.tagDsp",
"the format for the tag display(no history permission!)",
@ font-weight: bold;
| > > > > > > | 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 |
@ font-weight: bold;
},
{ "td.timelineTime",
"the format for the timeline time display",
@ vertical-align: top;
@ text-align: right;
},
{ "td.timelineGraph",
"the format for the grap placeholder cells in timelines",
@ width: 20;
@ text-align: left;
@ vertical-align: top;
},
{ "a.tagLink",
"the format for the tag links",
@
},
{ "span.tagDsp",
"the format for the tag display(no history permission!)",
@ font-weight: bold;
|
| ︙ | ︙ |
Changes to src/timeline.c.
| ︙ | ︙ | |||
107 108 109 110 111 112 113 |
** events by that user. If the date+time is specified, then the timeline
** is centered on that date+time.
*/
void hyperlink_to_user(const char *zU, const char *zD, const char *zSuf){
if( zSuf==0 ) zSuf = "";
if( g.okHistory ){
if( zD && zD[0] ){
| | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
** events by that user. If the date+time is specified, then the timeline
** is centered on that date+time.
*/
void hyperlink_to_user(const char *zU, const char *zD, const char *zSuf){
if( zSuf==0 ) zSuf = "";
if( g.okHistory ){
if( zD && zD[0] ){
@ <a href="%s(g.zTop)/timeline?c=%T(zD)&u=%T(zU)">%h(zU)</a>%s(zSuf)
}else{
@ <a href="%s(g.zTop)/timeline?u=%T(zU)">%h(zU)</a>%s(zSuf)
}
}else{
@ %s(zU)
}
}
|
| ︙ | ︙ | |||
225 226 227 228 229 230 231 |
if( suppressCnt ){
@ <tr><td /><td /><td>
@ <span class="timelineDisabled">... %d(suppressCnt) similar
@ event%s(suppressCnt>1?"s":"") omitted.</span></td></tr>
suppressCnt = 0;
}
if( strcmp(zType,"div")==0 ){
| | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 |
if( suppressCnt ){
@ <tr><td /><td /><td>
@ <span class="timelineDisabled">... %d(suppressCnt) similar
@ event%s(suppressCnt>1?"s":"") omitted.</span></td></tr>
suppressCnt = 0;
}
if( strcmp(zType,"div")==0 ){
@ <tr><td colspan="3"><hr /></td></tr>
continue;
}
if( memcmp(zDate, zPrevDate, 10) ){
sprintf(zPrevDate, "%.10s", zDate);
@ <tr><td>
@ <div class="divider">%s(zPrevDate)</div>
@ </td></tr>
}
memcpy(zTime, &zDate[11], 5);
zTime[5] = 0;
@ <tr>
@ <td class="timelineTime">%s(zTime)</td>
@ <td class="timelineGraph">
if( pGraph && zType[0]=='c' ){
int nParent = 0;
int aParent[32];
const char *zBr;
int gidx;
static Stmt qparent;
static Stmt qbranch;
|
| ︙ | ︙ |