Fossil SCM

Always supply an href= attribute on hyperlinks within the preview, even if the hyperlink is never used. Make the hyperlinked paths of the finfo page point to the tree-view rather than the flat-view. Provide links between the tree-view and the file-ages page.

drh 2014-01-07 11:25 trunk
Commit 4306ab81437b6736667e07c5b27af2b629e579a4
2 files changed +7 -6 +2 -2
+7 -6
--- src/browse.c
+++ src/browse.c
@@ -473,10 +473,14 @@
473473
}
474474
}
475475
if( zCI ){
476476
style_submenu_element("All", "All", "%s",
477477
url_render(&sURI, "ci", 0, 0, 0));
478
+ if( nD==0 ){
479
+ style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%S",
480
+ zUuid);
481
+ }
478482
}
479483
if( linkTrunk ){
480484
style_submenu_element("Trunk", "Trunk", "%s",
481485
url_render(&sURI, "ci", "trunk", 0, 0));
482486
}
@@ -561,28 +565,24 @@
561565
** The <li> element for directories also contains a sublist <ul>
562566
** for the contents of that directory.
563567
*/
564568
@ <div class="filetree"><ul>
565569
if( nD ){
566
- char *zLink = href("%s", url_render(&sURI, "name", 0, 0, 0));
567570
@ <li class="dir">
568
- @ %z(zLink)%h(zProjectName)</a>
569571
}else{
570572
@ <li class="dir subdir">
571
- @ <a>%h(zProjectName)</a>
572573
}
574
+ @ %z(href("%s",url_render(&sURI,"name",0,0,0)))%h(zProjectName)</a>
573575
@ <ul>
574576
for(p=sTree.pFirst; p; p=p->pNext){
575577
if( p->isDir ){
576578
if( p->nFullName==nD-1 ){
577579
@ <li class="dir subdir">
578
- @ <a>%h(p->zName)</a>
579580
}else{
580
- char *zLink = href("%s", url_render(&sURI, "name", p->zFullName, 0, 0));
581581
@ <li class="dir">
582
- @ %z(zLink)%h(p->zName)</a>
583582
}
583
+ @ %z(href("%s",url_render(&sURI,"name",p->zFullName,0,0)))%h(p->zName)</a>
584584
if( startExpanded || p->nFullName<=nD ){
585585
@ <ul>
586586
}else{
587587
@ <ul style='display:none;'>
588588
}
@@ -761,10 +761,11 @@
761761
if( zName==0 ) zName = "tip";
762762
rid = symbolic_name_to_rid(zName, "ci");
763763
if( rid==0 ){
764764
fossil_fatal("not a valid check-in: %s", zName);
765765
}
766
+ style_submenu_element("Tree-View", "Tree-View", "%R/tree?ci=%T", zName);
766767
style_header("File Ages", zName);
767768
compute_fileage(rid);
768769
baseTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
769770
zBaseTime = db_text("","SELECT datetime(%.20g%s)", baseTime, timeline_utc());
770771
@ <h2>File Ages For Check-in
771772
--- src/browse.c
+++ src/browse.c
@@ -473,10 +473,14 @@
473 }
474 }
475 if( zCI ){
476 style_submenu_element("All", "All", "%s",
477 url_render(&sURI, "ci", 0, 0, 0));
 
 
 
 
478 }
479 if( linkTrunk ){
480 style_submenu_element("Trunk", "Trunk", "%s",
481 url_render(&sURI, "ci", "trunk", 0, 0));
482 }
@@ -561,28 +565,24 @@
561 ** The <li> element for directories also contains a sublist <ul>
562 ** for the contents of that directory.
563 */
564 @ <div class="filetree"><ul>
565 if( nD ){
566 char *zLink = href("%s", url_render(&sURI, "name", 0, 0, 0));
567 @ <li class="dir">
568 @ %z(zLink)%h(zProjectName)</a>
569 }else{
570 @ <li class="dir subdir">
571 @ <a>%h(zProjectName)</a>
572 }
 
573 @ <ul>
574 for(p=sTree.pFirst; p; p=p->pNext){
575 if( p->isDir ){
576 if( p->nFullName==nD-1 ){
577 @ <li class="dir subdir">
578 @ <a>%h(p->zName)</a>
579 }else{
580 char *zLink = href("%s", url_render(&sURI, "name", p->zFullName, 0, 0));
581 @ <li class="dir">
582 @ %z(zLink)%h(p->zName)</a>
583 }
 
584 if( startExpanded || p->nFullName<=nD ){
585 @ <ul>
586 }else{
587 @ <ul style='display:none;'>
588 }
@@ -761,10 +761,11 @@
761 if( zName==0 ) zName = "tip";
762 rid = symbolic_name_to_rid(zName, "ci");
763 if( rid==0 ){
764 fossil_fatal("not a valid check-in: %s", zName);
765 }
 
766 style_header("File Ages", zName);
767 compute_fileage(rid);
768 baseTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
769 zBaseTime = db_text("","SELECT datetime(%.20g%s)", baseTime, timeline_utc());
770 @ <h2>File Ages For Check-in
771
--- src/browse.c
+++ src/browse.c
@@ -473,10 +473,14 @@
473 }
474 }
475 if( zCI ){
476 style_submenu_element("All", "All", "%s",
477 url_render(&sURI, "ci", 0, 0, 0));
478 if( nD==0 ){
479 style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%S",
480 zUuid);
481 }
482 }
483 if( linkTrunk ){
484 style_submenu_element("Trunk", "Trunk", "%s",
485 url_render(&sURI, "ci", "trunk", 0, 0));
486 }
@@ -561,28 +565,24 @@
565 ** The <li> element for directories also contains a sublist <ul>
566 ** for the contents of that directory.
567 */
568 @ <div class="filetree"><ul>
569 if( nD ){
 
570 @ <li class="dir">
 
571 }else{
572 @ <li class="dir subdir">
 
573 }
574 @ %z(href("%s",url_render(&sURI,"name",0,0,0)))%h(zProjectName)</a>
575 @ <ul>
576 for(p=sTree.pFirst; p; p=p->pNext){
577 if( p->isDir ){
578 if( p->nFullName==nD-1 ){
579 @ <li class="dir subdir">
 
580 }else{
 
581 @ <li class="dir">
 
582 }
583 @ %z(href("%s",url_render(&sURI,"name",p->zFullName,0,0)))%h(p->zName)</a>
584 if( startExpanded || p->nFullName<=nD ){
585 @ <ul>
586 }else{
587 @ <ul style='display:none;'>
588 }
@@ -761,10 +761,11 @@
761 if( zName==0 ) zName = "tip";
762 rid = symbolic_name_to_rid(zName, "ci");
763 if( rid==0 ){
764 fossil_fatal("not a valid check-in: %s", zName);
765 }
766 style_submenu_element("Tree-View", "Tree-View", "%R/tree?ci=%T", zName);
767 style_header("File Ages", zName);
768 compute_fileage(rid);
769 baseTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", rid);
770 zBaseTime = db_text("","SELECT datetime(%.20g%s)", baseTime, timeline_utc());
771 @ <h2>File Ages For Check-in
772
+2 -2
--- src/finfo.c
+++ src/finfo.c
@@ -376,16 +376,16 @@
376376
blob_zero(&title);
377377
if( baseCheckin ){
378378
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
379379
char *zLink = href("%R/info/%S", zUuid);
380380
blob_appendf(&title, "Ancestors of file ");
381
- hyperlinked_path(zFilename, &title, zUuid, "dir", "");
381
+ hyperlinked_path(zFilename, &title, zUuid, "tree", "");
382382
blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid);
383383
fossil_free(zUuid);
384384
}else{
385385
blob_appendf(&title, "History of files named ");
386
- hyperlinked_path(zFilename, &title, 0, "dir", "");
386
+ hyperlinked_path(zFilename, &title, 0, "tree", "");
387387
}
388388
@ <h2>%b(&title)</h2>
389389
blob_reset(&title);
390390
pGraph = graph_init();
391391
@ <div id="canvas" style="position:relative;width:1px;height:1px;"
392392
--- src/finfo.c
+++ src/finfo.c
@@ -376,16 +376,16 @@
376 blob_zero(&title);
377 if( baseCheckin ){
378 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
379 char *zLink = href("%R/info/%S", zUuid);
380 blob_appendf(&title, "Ancestors of file ");
381 hyperlinked_path(zFilename, &title, zUuid, "dir", "");
382 blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid);
383 fossil_free(zUuid);
384 }else{
385 blob_appendf(&title, "History of files named ");
386 hyperlinked_path(zFilename, &title, 0, "dir", "");
387 }
388 @ <h2>%b(&title)</h2>
389 blob_reset(&title);
390 pGraph = graph_init();
391 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
392
--- src/finfo.c
+++ src/finfo.c
@@ -376,16 +376,16 @@
376 blob_zero(&title);
377 if( baseCheckin ){
378 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", baseCheckin);
379 char *zLink = href("%R/info/%S", zUuid);
380 blob_appendf(&title, "Ancestors of file ");
381 hyperlinked_path(zFilename, &title, zUuid, "tree", "");
382 blob_appendf(&title, " from check-in %z%.10s</a>", zLink, zUuid);
383 fossil_free(zUuid);
384 }else{
385 blob_appendf(&title, "History of files named ");
386 hyperlinked_path(zFilename, &title, 0, "tree", "");
387 }
388 @ <h2>%b(&title)</h2>
389 blob_reset(&title);
390 pGraph = graph_init();
391 @ <div id="canvas" style="position:relative;width:1px;height:1px;"
392

Keyboard Shortcuts

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