Index: src/branch.c ================================================================== --- src/branch.c +++ src/branch.c @@ -229,11 +229,12 @@ }else{ style_submenu_element("Closed","Closed","brlist?closed"); } login_anonymous_available(); compute_leaves(0, 1); - style_sidebox_begin("Nomenclature:", "33%"); + @ <div class="nomenclatureSidebox"> + @ Nomenclature: @ <ol> @ <li> An <a href="brlist">open branch</a> is a branch that has one or @ more <a href="leaves">open leaves.</a> @ The presence of open leaves presumably means @ that the branch is still being extended with new check-ins.</li> @@ -240,11 +241,11 @@ @ <li> A <a href="brlist?closed">closed branch</a> is a branch with only @ <a href="leaves?closed">closed leaves</a>. @ Closed branches are fixed and do not change (unless they are first @ reopened)</li> @ </ol> - style_sidebox_end(); + @ </div> cnt = 0; if( !showClosed ){ db_prepare(&q, "SELECT DISTINCT value FROM tagxref" Index: src/descendants.c ================================================================== --- src/descendants.c +++ src/descendants.c @@ -316,19 +316,20 @@ style_submenu_element("Open", "Open", "leaves"); } style_header("Leaves"); login_anonymous_available(); compute_leaves(0, showAll ? 0 : showClosed ? 2 : 1); - style_sidebox_begin("Nomenclature:", "33%"); + @ <div class="nomenclatureSidebox"> + @ Nomenclature: @ <ol> @ <li> A <b>leaf</b> is a check-in with no descendants.</li> @ <li> An <b>open leaf</b> is a leaf that does not have a "closed" tag @ and is thus assumed to still be in use.</li> @ <li> A <b>closed leaf</b> has a "closed" tag and is thus assumed to @ be historical and no longer in active use.</li> @ </ol> - style_sidebox_end(); + @ </div> if( showAll ){ @ <h1>All leaves, both open and closed:</h1> }else if( showClosed ){ @ <h1>Closed leaves:</h1> Index: src/login.c ================================================================== --- src/login.c +++ src/login.c @@ -596,11 +596,11 @@ if( !g.okHistory && db_exists("SELECT 1 FROM user" " WHERE login='anonymous'" " AND cap LIKE '%%h%%'") ){ const char *zUrl = PD("REQUEST_URI", "index"); - @ <p>Many <font color="red">hyperlinks are disabled.</font><br /> + @ <p>Many <span class="disabledLinks">hyperlinks are disabled.</span><br /> @ Use <a href="%s(g.zTop)/login?anon=1&g=%T(zUrl)">anonymous login</a> @ to enable hyperlinks.</p> } } Index: src/setup.c ================================================================== --- src/setup.c +++ src/setup.c @@ -909,10 +909,18 @@ @ of CSS files can be seen on the <a href="setup_skin">skins page</a>. @ See also the <a href="setup_header">header</a> and @ <a href="setup_footer">footer</a> editing screens. @ <blockquote><pre> @ %h(zDefaultCSS) + @ /* internal page layout */ + @ %h(zTdTimelineTable) + @ %h(zTdTimelineTimeStampCell) + @ %h(zTdTimelineOmitted) + @ %h(zTdTimelineComment) + @ %h(zDivTimelineLeafDsp) + @ %h(zDivNomenclatureSidebox) + @ %h(zSpanDisabledLinks) @ </pre></blockquote> style_footer(); db_end_transaction(0); } Index: src/style.c ================================================================== --- src/style.c +++ src/style.c @@ -337,10 +337,11 @@ @ padding: 1px 1px 1px 1px; @ font-size: 1.2em; @ font-weight: bold; @ background-color: #558195; @ color: white; +@ white-space: nowrap; @ } @ @ /* The "Date" that occurs on the left hand side of timelines */ @ div.divider { @ background: #a1c4d4; @@ -379,10 +380,62 @@ @ vertical-align: top; @ text-align: right; @ padding: 0.2ex 2ex; @ } ; +const char zTdTimelineTable[] = +@ /* The time column in timeline tables */ +@ table.timelineTable { +@ cellspacing: 0; +@ border: 0; +@ cellpadding: 0; +@} +; +const char zTdTimelineTimeStampCell[] = +@ /* The time column in timeline tables */ +@ td.timelineTimeStampCell { +@ valign: top; +@ text-align: right; +@} +; +const char zTdTimelineOmitted[] = +@ /* The omitted line in timeline tables */ +@ td.timelineOmitted { +@ font-size: small; +@ font-style: italic; +@ } +; +const char zTdTimelineComment[] = +@ /* The comment cell in timeline tables */ +@ td.timelineComment { +@ valign: top; +@ text-align: left; +@ } +; +const char zDivTimelineLeafDsp[] = +@ /* The leaf description in timeline tables */ +@ div.timelineLeafDsp { +@ font-weight: bold; +@ display: inline; +@ } +; +const char zDivNomenclatureSidebox[] = +@ /* The nomenclature sidebox for branches,.. */ +@ div.nomenclatureSidebox { +@ float: right; +@ width: 33%; +@ border-width: medium; +@ border-style: double; +@ margin: 10; +@ } +; +const char zSpanDisabledLinks[] = +@ /* hyperlinks disabled text */ +@ span.disabledLinks { +@ color: red; +@ } +; /* ** WEBPAGE: style.css */ void page_style_css(void){ @@ -389,10 +442,26 @@ char *zCSS = 0; cgi_set_content_type("text/css"); zCSS = db_get("css",(char*)zDefaultCSS); cgi_append_content(zCSS, -1); + cgi_append_content("\n", -1); + /* append internal classes, if not already in style sheet */ + if (!strstr(zCSS,"timelineTable")) + cgi_append_content(zTdTimelineTable,-1); + if (!strstr(zCSS,"timelineTimeStampCell")) + cgi_append_content(zTdTimelineTimeStampCell,-1); + if (!strstr(zCSS,"timelineOmitted")) + cgi_append_content(zTdTimelineOmitted,-1); + if (!strstr(zCSS,"timelineComment")) + cgi_append_content(zTdTimelineComment,-1); + if (!strstr(zCSS,"timelineLeafDsp")) + cgi_append_content(zDivTimelineLeafDsp,-1); + if (!strstr(zCSS,"nomenclatureSidebox")) + cgi_append_content(zDivNomenclatureSidebox,-1); + if (!strstr(zCSS,"disabledLinks")) + cgi_append_content(zSpanDisabledLinks,-1); g.isConst = 1; } /* ** WEBPAGE: test_env Index: src/timeline.c ================================================================== --- src/timeline.c +++ src/timeline.c @@ -192,11 +192,11 @@ if( tmFlags & TIMELINE_GRAPH ){ pGraph = graph_init(); @ <div id="canvas" style="position:relative;width:1px;height:1px;"></div> } - @ <table cellspacing=0 border=0 cellpadding=0> + @ <table class="timelineTable"> blob_zero(&comment); while( db_step(pQuery)==SQLITE_ROW ){ int rid = db_column_int(pQuery, 0); const char *zUuid = db_column_text(pQuery, 1); int isLeaf = db_column_int(pQuery, 5); @@ -218,29 +218,29 @@ } } } prevTagid = tagid; if( suppressCnt ){ - @ <tr><td><td><td> - @ <small><i>... %d(suppressCnt) similar - @ event%s(suppressCnt>1?"s":"") omitted.</i></small></tr> + @ <tr><td><td><td class="timelineOmitted"> + @ ... %d(suppressCnt) similar event%s(suppressCnt>1?"s":"") omitted. + @ </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"><nobr>%s(zPrevDate)</nobr></div> + @ <div class="divider">%s(zPrevDate)</div> @ </td></tr> } memcpy(zTime, &zDate[11], 5); zTime[5] = 0; @ <tr> - @ <td valign="top" align="right">%s(zTime)</td> + @ <td class="timelineTimeStampCell">%s(zTime)</td> @ <td width="20" align="left" valign="top"> if( pGraph && zType[0]=='c' ){ int nParent = 0; int aParent[32]; const char *zBr; @@ -268,23 +268,23 @@ gidx = graph_add_row(pGraph, rid, nParent, aParent, zBr, zBgClr); db_reset(&qbranch); @ <div id="m%d(gidx)"></div> } if( zBgClr && zBgClr[0] ){ - @ <td valign="top" align="left" bgcolor="%h(zBgClr)"> + @ <td class="timelineComment" bgcolor="%h(zBgClr)"> }else{ - @ <td valign="top" align="left"> + @ <td class="timelineComment"> } if( zType[0]=='c' ){ hyperlink_to_uuid(zUuid); if( isLeaf ){ if( db_exists("SELECT 1 FROM tagxref" " WHERE rid=%d AND tagid=%d AND tagtype>0", rid, TAG_CLOSED) ){ - @ <b>Closed-Leaf:</b> + @ <div class="timelineLeafDsp">Closed-Leaf:</div> }else{ - @ <b>Leaf:</b> + @ <div class="timelineLeafDsp">Leaf:</div> } } }else if( (tmFlags & TIMELINE_ARTID)!=0 ){ hyperlink_to_uuid(zUuid); } @@ -310,12 +310,13 @@ } @ </td></tr> } if( suppressCnt ){ @ <tr><td><td><td> - @ <small><i>... %d(suppressCnt) similar - @ event%s(suppressCnt>1?"s":"") omitted.</i></small></tr> + @ <tr><td><td><td class="timelineOmitted"> + @ ... %d(suppressCnt) similar event%s(suppressCnt>1?"s":"") omitted. + @ </tr> suppressCnt = 0; } if( pGraph ){ graph_finish(pGraph, (tmFlags & TIMELINE_DISJOINT)!=0); if( pGraph->nErr ){