Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Begin adding the ability to use specially-named wiki pages to supplemental information about branches, tags, and/or checkins. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | describe-objects-using-wiki |
Files: | files | file ages | folders |
SHA3-256: |
dcf93d034143f49ef848cbae3abb5e25 |
User & Date: | drh 2018-12-30 20:30:33 |
About
This is the first checkin for the branch containing changes that associated wiki pages to branches, checkins, and/or tags based on the wiki name. This particular comment is serves a as self-test for the new capability.
As of this writing (2018-12-30) the design is that wiki pages are associated with branches, checkins, and tags if the name of the wiki page is one of the following forms:
- branch/branch-name
- checkin/full-checkin-hash
- tag/tag-name
References
2018-12-31
| ||
02:11 | • Wiki page "branch/describe-objects-using-wiki" ... (artifact: beb8a258 user: drh) | |
Context
2018-12-30
| ||
21:37 | Add more linkage between the speicially named wiki pages and various objects. ... (check-in: 42327c67 user: drh tags: describe-objects-using-wiki) | |
20:30 | Begin adding the ability to use specially-named wiki pages to supplemental information about branches, tags, and/or checkins. ... (check-in: dcf93d03 user: drh tags: describe-objects-using-wiki) | |
2018-12-29
| ||
18:21 | Do not show cherrypick merge links in the context for the /ci_tags page. ... (check-in: 758029a8 user: drh tags: trunk) | |
Changes
Changes to src/doc.c.
︙ | ︙ | |||
508 509 510 511 512 513 514 | ** ** href="$ROOT/ ** action="$ROOT/ ** ** Convert $ROOT to the root URI of the repository. Allow ' in place of " ** and any case for href or action. */ | | | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 | ** ** href="$ROOT/ ** action="$ROOT/ ** ** Convert $ROOT to the root URI of the repository. Allow ' in place of " ** and any case for href or action. */ void convert_href_and_output(Blob *pIn){ int i, base; int n = blob_size(pIn); char *z = blob_buffer(pIn); for(base=0, i=7; i<n; i++){ if( z[i]=='$' && strncmp(&z[i],"$ROOT/", 6)==0 && (z[i-1]=='\'' || z[i-1]=='"') |
︙ | ︙ |
Changes to src/setup.c.
︙ | ︙ | |||
939 940 941 942 943 944 945 946 947 948 949 950 951 952 | } style_header("Wiki Configuration"); db_begin_transaction(); @ <form action="%s(g.zTop)/setup_config" method="post"><div> login_insert_csrf_secret(); @ <input type="submit" name="submit" value="Apply Changes" /></p> @ <hr /> onoff_attribute("Enable WYSIWYG Wiki Editing", "wysiwyg-wiki", "wysiwyg-wiki", 0, 0); @ <p>Enable what-you-see-is-what-you-get (WYSIWYG) editing of wiki pages. @ The WYSIWYG editor generates HTML instead of markup, which makes @ subsequent manual editing more difficult. @ (Property: "wysiwyg-wiki")</p> | > > > > > > > > > > > > > > | 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 | } style_header("Wiki Configuration"); db_begin_transaction(); @ <form action="%s(g.zTop)/setup_config" method="post"><div> login_insert_csrf_secret(); @ <input type="submit" name="submit" value="Apply Changes" /></p> @ <hr /> onoff_attribute("Associate Wiki Pages With Branches, Tags, or Checkins", "wiki-about", "wiki-about", 1, 0); @ <p> @ Associate wiki pages with branches, tags, or checkins, based on @ the wiki page name. Wiki pages that begin with "branch/", "checkin/" @ or "tag/" and which continue with the name of an existing branch, checkin @ or tag are treated specially when this feature is enabled. @ <ul> @ <li> <b>branch/</b><i>branch-name</i> @ <li> <b>checkin/</b><i>full-checkin-hash</i> @ <li> <b>tag/</b><i>tag-name</i> @ </ul> @ (Property: "wiki-about")</p> @ <hr /> onoff_attribute("Enable WYSIWYG Wiki Editing", "wysiwyg-wiki", "wysiwyg-wiki", 0, 0); @ <p>Enable what-you-see-is-what-you-get (WYSIWYG) editing of wiki pages. @ The WYSIWYG editor generates HTML instead of markup, which makes @ subsequent manual editing more difficult. @ (Property: "wysiwyg-wiki")</p> |
︙ | ︙ |
Changes to src/timeline.c.
︙ | ︙ | |||
1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 | ** uf=FILE_HASH Show only check-ins that contain the given file version ** chng=GLOBLIST Show only check-ins that involve changes to a file whose ** name matches one of the comma-separate GLOBLIST ** brbg Background color from branch name ** ubg Background color from user ** namechng Show only check-ins that have filename changes ** forks Show only forks and their children ** ym=YYYY-MM Show only events for the given year/month ** yw=YYYY-WW Show only events for the given week of the given year ** yw=YYYY-MM-DD Show events for the week that includes the given day ** ymd=YYYY-MM-DD Show only events on the given day ** days=N Show events over the previous N days ** datefmt=N Override the date format ** bisect Show the check-ins that are in the current bisect ** showid Show RIDs ** showsql Show the SQL text | > < | 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 | ** uf=FILE_HASH Show only check-ins that contain the given file version ** chng=GLOBLIST Show only check-ins that involve changes to a file whose ** name matches one of the comma-separate GLOBLIST ** brbg Background color from branch name ** ubg Background color from user ** namechng Show only check-ins that have filename changes ** forks Show only forks and their children ** cherrypicks Show all cherrypicks ** ym=YYYY-MM Show only events for the given year/month ** yw=YYYY-WW Show only events for the given week of the given year ** yw=YYYY-MM-DD Show events for the week that includes the given day ** ymd=YYYY-MM-DD Show only events on the given day ** days=N Show events over the previous N days ** datefmt=N Override the date format ** bisect Show the check-ins that are in the current bisect ** showid Show RIDs ** showsql Show the SQL text ** ** p= and d= can appear individually or together. If either p= or d= ** appear, then u=, y=, a=, and b= are ignored. ** ** If both a= and b= appear then both upper and lower bounds are honored. ** ** CHECKIN or TIMEORTAG can be a check-in hash prefix, or a tag, or the |
︙ | ︙ | |||
2267 2268 2269 2270 2271 2272 2273 | if( r>0.0 ) selectedRid = timeline_add_divider(r); } blob_zero(&sql); db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/"); if( fossil_islower(desc.aData[0]) ){ desc.aData[0] = fossil_toupper(desc.aData[0]); } | > > > | > | 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 | if( r>0.0 ) selectedRid = timeline_add_divider(r); } blob_zero(&sql); db_prepare(&q, "SELECT * FROM timeline ORDER BY sortby DESC /*scan*/"); if( fossil_islower(desc.aData[0]) ){ desc.aData[0] = fossil_toupper(desc.aData[0]); } if( zBrName && wiki_render_associated("branch", zBrName) ){ @ <div class="section">%b(&desc)</div> } else{ @ <h2>%b(&desc)</h2> } blob_reset(&desc); /* Report any errors. */ if( zError ){ @ <p class="generalError">%h(zError)</p> } |
︙ | ︙ |
Changes to src/wiki.c.
︙ | ︙ | |||
1481 1482 1483 1484 1485 1486 1487 | verify_all_options(); if( g.argc!=3 ) usage("FILE"); blob_zero(&out); blob_read_from_file(&in, g.argv[2], ExtFILE); markdown_to_html(&in, 0, &out); blob_write_to_file(&out, "-"); } | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 | verify_all_options(); if( g.argc!=3 ) usage("FILE"); blob_zero(&out); blob_read_from_file(&in, g.argv[2], ExtFILE); markdown_to_html(&in, 0, &out); blob_write_to_file(&out, "-"); } /* ** Check to see if there exists a wiki page with a name zPrefix/zName. ** If there is, then render a <div class='section'>..</div> and ** return true. ** ** If there is no such wiki page, return false. */ int wiki_render_associated( const char *zPrefix, /* "branch", "tag", or "checkin" */ const char *zName /* Name of the object */ ){ int rid; Manifest *pWiki; rid = db_int(0, "SELECT rid FROM tagxref" " WHERE tagid=(SELECT tagid FROM tag WHERE tagname='wiki-%q/%q')" " ORDER BY mtime DESC LIMIT 1", zPrefix, zName ); if( rid==0 ) return 0; pWiki = manifest_get(rid, CFTYPE_WIKI, 0); if( pWiki==0 ) return 0; if( fossil_strcmp(pWiki->zMimetype, "text/x-markdown")==0 ){ Blob tail = BLOB_INITIALIZER; Blob title = BLOB_INITIALIZER; Blob markdown; blob_init(&markdown, pWiki->zWiki, -1); markdown_to_html(&markdown, &title, &tail); if( blob_size(&title) ){ @ <div class="section">%h(blob_str(&title))</div> }else{ @ <div class="section">About %s(zPrefix) %h(zName)<div> } @ <div class="wiki"> convert_href_and_output(&tail); @ </div> blob_reset(&tail); blob_reset(&title); blob_reset(&markdown); }else if( fossil_strcmp(pWiki->zMimetype, "text/plain")==0 ){ @ <div class="section">About %s(zPrefix) %h(zName)</div> @ <pre> @ %h(pWiki->zWiki) @ </pre> }else{ Blob tail = BLOB_INITIALIZER; Blob title = BLOB_INITIALIZER; Blob wiki; blob_init(&wiki, pWiki->zWiki, -1); if( wiki_find_title(&wiki, &title, &tail) ){ @ <div class="section">%h(blob_str(&title))</div> @ <div class="wiki"> wiki_convert(&tail, 0, WIKI_BUTTONS); @ </div> }else{ @ <div class="section">About %s(zPrefix) %h(zName)</div> @ <div class="wiki"> wiki_convert(&wiki, 0, WIKI_BUTTONS); @ </div> } blob_reset(&tail); blob_reset(&title); blob_reset(&wiki); } manifest_destroy(pWiki); return 1; } |