@@ -1579,35 +1579,87 @@
1579 1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** showid Show RID values
1580 1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1581 1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Show the complete change history for a single wiki page.
1582 1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1583 1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void whistory_page(void){
1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
1584 1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zPageName;
1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Blob sql;
1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- Stmt q;
1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double rNow;
1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int showRid;
1587 1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
login_check_credentials();
1588 1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !g.perm.RdWiki ){ login_needed(g.anon.RdWiki); return; }
1589 1590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPageName = PD("name","");
1590 1591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_set_current_feature("wiki");
1591 1592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_header("History Of %s", zPageName);
1592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_init(&sql, 0, 0);
1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append(&sql, timeline_query_for_www(), -1);
1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_append_sql(&sql,
1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "AND event.objid IN ("
1596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " SELECT tagxref.srcid"
1597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " FROM tagxref, tag"
1598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE tagxref.tagid=tag.tagid"
1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " AND tag.tagname='wiki-%q')"
1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " ORDER BY mtime DESC",
1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- zPageName
1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ showRid = P("showid")!=0;
1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT"
1596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " event.mtime,"
1597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " blob.uuid,"
1598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " coalesce(event.euser,event.user),"
1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " event.objid,"
1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " datetime(event.mtime)"
1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM event, blob, tag, tagxref"
1602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE event.type='w' AND blob.rid=event.objid"
1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tag.tagname='wiki-%q'"
1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND tagxref.tagid=tag.tagid AND tagxref.srcid=event.objid"
1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY event.mtime DESC",
1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zPageName
1602 1607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_prepare(&q, "%s", blob_sql_text(&sql));
1604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- www_print_timeline(&q,
1605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- TIMELINE_DISJOINT|TIMELINE_GRAPH|TIMELINE_REFS,
1606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- 0, 0, 0, 0, 0, 0);
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <h2>History of <a href="%R/wiki?name=%T(zPageName)">%h(zPageName)</a></h2>
1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ form_begin( "id='wh-form'", "%R/wdiff" );
1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input id="wh-pid" name="pid" type="radio" hidden />
1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <input id="wh-id" name="id" type="hidden" />
1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </form>
1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <style> .wh-clickable { cursor: pointer; } </style>
1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <div class="brlist">
1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <table>
1616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <thead><tr>
1617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>Age</th>
1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>Hash</th>
1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th><span title="Baseline from which diffs are computed (click to unset)"
1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ id="wh-cleaner" class="wh-clickable">⚓</span></th>
1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>User<span hidden class="wh-clickable"
1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ id="wh-collapser"> ♲</span></th>
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( showRid ){
1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th>RID</th>
1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th> </th>
1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tr></thead><tbody>
1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rNow = db_double(0.0, "SELECT julianday('now')");
1629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char zAuthor[64]; memset( zAuthor, 0, sizeof(zAuthor) );
1630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
1631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ double rMtime = db_column_double(&q, 0);
1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUuid = db_column_text(&q, 1);
1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUser = db_column_text(&q, 2);
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int wrid = db_column_int(&q, 3);
1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zWhen = db_column_text(&q, 4);
1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* sqlite3_int64 iMtime = (sqlite3_int64)(rMtime*86400.0); */
1637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ char *zAge = human_readable_age(rNow - rMtime);
1638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strncmp( zAuthor, zUser, sizeof(zAuthor) - 1 ) == 0 ) {
1639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr class="wh-intermediate" title="%s(zWhen)">
1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else {
1642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ strncpy( zAuthor, zUser, sizeof(zAuthor) - 1 );
1643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr class="wh-major" title="%s(zWhen)">
1644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* @ <td data-sortkey="%016llx(iMtime)">%s(zAge)</td> */
1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%s(zAge)</td>
1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil_free(zAge);
1648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%z(href("%R/info/%s",zUuid))%S(zUuid)</a></td>
1649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td><input disabled type="radio" name="baseline" value="%S(zUuid)"/></td>
1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%h(zUser)<span class="wh-iterations" hidden /></td>
1651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( showRid ){
1652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%z(href("%R/artifact/%S",zUuid))%d(wrid)</a></td>
1653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td>%z(chref("wh-difflink","%R/wdiff?id=%S",zUuid))diff</a></td>
1655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tr>
1656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tbody></table></div>
1607 1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- blob_reset(&sql);
1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ builtin_request_js("fossil.page.whistory.js");
1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* style_table_sorter(); */
1609 1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
1610 1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1611 1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1612 1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1613 1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: wdiff
@@ -1642,14 +1694,14 @@
1642 1694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zId = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid1);
1643 1695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pW1 = manifest_get(rid1, CFTYPE_WIKI, 0);
1644 1696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( pW1==0 ) fossil_redirect_home();
1645 1697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&w1, pW1->zWiki, -1);
1646 1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPid = P("pid");
1647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zPid==0 && pW1->nParent ){
1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( ( zPid==0 || zPid[0] == 0 ) && pW1->nParent ){
1648 1700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zPid = pW1->azParent[0];
1649 1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zPid ){
1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zPid && zPid[0] != 0 ){
1651 1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zDate;
1652 1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid2 = name_to_typed_rid(zPid, "w");
1653 1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pW2 = manifest_get(rid2, CFTYPE_WIKI, 0);
1654 1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_init(&w2, pW2->zWiki, -1);
1655 1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <h2>Changes to \
1656 1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!