Fossil SCM
Put the "trunk" in the document URL when the ftsdocs table is first constructed, rather than translating the URL upon display.
Commit
58034a489ae67a8dc541b44e4009e52b4e1d2647
Parent
375bc71ea6d10cf…
1 file changed
+4
-18
+4
-18
| --- src/search.c | ||
| +++ src/search.c | ||
| @@ -973,11 +973,10 @@ | ||
| 973 | 973 | unsigned int srchFlags, /* What to search over */ |
| 974 | 974 | int fDebug /* Extra debugging output */ |
| 975 | 975 | ){ |
| 976 | 976 | Stmt q; |
| 977 | 977 | int nRow = 0; |
| 978 | - const char *zDocBr = 0; /* The branch of documentation to search */ | |
| 979 | 978 | |
| 980 | 979 | srchFlags = search_restrict(srchFlags); |
| 981 | 980 | if( srchFlags==0 ) return 0; |
| 982 | 981 | search_sql_setup(g.db); |
| 983 | 982 | add_content_sql_commands(g.db); |
| @@ -995,28 +994,17 @@ | ||
| 995 | 994 | " ORDER BY score DESC, date DESC;"); |
| 996 | 995 | while( db_step(&q)==SQLITE_ROW ){ |
| 997 | 996 | const char *zUrl = db_column_text(&q, 0); |
| 998 | 997 | const char *zSnippet = db_column_text(&q, 1); |
| 999 | 998 | const char *zLabel = db_column_text(&q, 2); |
| 1000 | - const char *zId = db_column_text(&q,4); | |
| 1001 | 999 | if( nRow==0 ){ |
| 1002 | 1000 | @ <ol> |
| 1003 | 1001 | } |
| 1004 | 1002 | nRow++; |
| 1005 | - if( strncmp(zUrl,"/doc/",5)==0 ){ | |
| 1006 | - /* Change the BRANCH in URLs like "/doc/BRANCH/path" into the | |
| 1007 | - ** branch name specified by the doc-branch setting. */ | |
| 1008 | - int i; | |
| 1009 | - if( zDocBr==0 ) zDocBr = db_get("doc-branch","trunk"); | |
| 1010 | - for(i=5; zUrl[i]; i++) if( zUrl[i]=='/' ){ i++; break; } | |
| 1011 | - @ <li><p><a href='%R/doc/%T(zDocBr)/%T(zUrl+i)'>%h(zLabel)</a> | |
| 1012 | - }else{ | |
| 1013 | - /* Non-"/doc/" URLs are delivered as is */ | |
| 1014 | - @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a> | |
| 1015 | - } | |
| 1003 | + @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a> | |
| 1016 | 1004 | if( fDebug ){ |
| 1017 | - @ (%e(db_column_double(&q,3)), %s(zId)) | |
| 1005 | + @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4)) | |
| 1018 | 1006 | } |
| 1019 | 1007 | @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li> |
| 1020 | 1008 | } |
| 1021 | 1009 | db_finalize(&q); |
| 1022 | 1010 | if( nRow ){ |
| @@ -1544,19 +1532,17 @@ | ||
| 1544 | 1532 | */ |
| 1545 | 1533 | static void search_update_doc_index(void){ |
| 1546 | 1534 | const char *zDocBr = db_get("doc-branch","trunk"); |
| 1547 | 1535 | int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0; |
| 1548 | 1536 | double rTime; |
| 1549 | - char *zBrUuid; | |
| 1550 | 1537 | if( ckid==0 ) return; |
| 1551 | 1538 | if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" |
| 1552 | 1539 | " AND NOT idxed", ckid) ) return; |
| 1553 | 1540 | |
| 1554 | 1541 | /* If we get this far, it means that changes to 'd' entries are |
| 1555 | 1542 | ** required. */ |
| 1556 | 1543 | rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); |
| 1557 | - zBrUuid = db_text("","SELECT substr(uuid,1,20) FROM blob WHERE rid=%d",ckid); | |
| 1558 | 1544 | db_multi_exec( |
| 1559 | 1545 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1560 | 1546 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1561 | 1547 | "INSERT OR IGNORE INTO current_docs(rid, name)" |
| 1562 | 1548 | " SELECT blob.rid, foci.filename FROM foci, blob" |
| @@ -1576,14 +1562,14 @@ | ||
| 1576 | 1562 | db_multi_exec( |
| 1577 | 1563 | "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" |
| 1578 | 1564 | " SELECT 'd', rid, name, 0," |
| 1579 | 1565 | " title('d',rid,name)," |
| 1580 | 1566 | " body('d',rid,name)," |
| 1581 | - " printf('/doc/%q/%%s',urlencode(name))," | |
| 1567 | + " printf('/doc/%T/%%s',urlencode(name))," | |
| 1582 | 1568 | " %.17g" |
| 1583 | 1569 | " FROM current_docs", |
| 1584 | - zBrUuid, rTime | |
| 1570 | + zDocBr, rTime | |
| 1585 | 1571 | ); |
| 1586 | 1572 | db_multi_exec( |
| 1587 | 1573 | "INSERT INTO ftsidx(docid,title,body)" |
| 1588 | 1574 | " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" |
| 1589 | 1575 | ); |
| 1590 | 1576 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -973,11 +973,10 @@ | |
| 973 | unsigned int srchFlags, /* What to search over */ |
| 974 | int fDebug /* Extra debugging output */ |
| 975 | ){ |
| 976 | Stmt q; |
| 977 | int nRow = 0; |
| 978 | const char *zDocBr = 0; /* The branch of documentation to search */ |
| 979 | |
| 980 | srchFlags = search_restrict(srchFlags); |
| 981 | if( srchFlags==0 ) return 0; |
| 982 | search_sql_setup(g.db); |
| 983 | add_content_sql_commands(g.db); |
| @@ -995,28 +994,17 @@ | |
| 995 | " ORDER BY score DESC, date DESC;"); |
| 996 | while( db_step(&q)==SQLITE_ROW ){ |
| 997 | const char *zUrl = db_column_text(&q, 0); |
| 998 | const char *zSnippet = db_column_text(&q, 1); |
| 999 | const char *zLabel = db_column_text(&q, 2); |
| 1000 | const char *zId = db_column_text(&q,4); |
| 1001 | if( nRow==0 ){ |
| 1002 | @ <ol> |
| 1003 | } |
| 1004 | nRow++; |
| 1005 | if( strncmp(zUrl,"/doc/",5)==0 ){ |
| 1006 | /* Change the BRANCH in URLs like "/doc/BRANCH/path" into the |
| 1007 | ** branch name specified by the doc-branch setting. */ |
| 1008 | int i; |
| 1009 | if( zDocBr==0 ) zDocBr = db_get("doc-branch","trunk"); |
| 1010 | for(i=5; zUrl[i]; i++) if( zUrl[i]=='/' ){ i++; break; } |
| 1011 | @ <li><p><a href='%R/doc/%T(zDocBr)/%T(zUrl+i)'>%h(zLabel)</a> |
| 1012 | }else{ |
| 1013 | /* Non-"/doc/" URLs are delivered as is */ |
| 1014 | @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a> |
| 1015 | } |
| 1016 | if( fDebug ){ |
| 1017 | @ (%e(db_column_double(&q,3)), %s(zId)) |
| 1018 | } |
| 1019 | @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li> |
| 1020 | } |
| 1021 | db_finalize(&q); |
| 1022 | if( nRow ){ |
| @@ -1544,19 +1532,17 @@ | |
| 1544 | */ |
| 1545 | static void search_update_doc_index(void){ |
| 1546 | const char *zDocBr = db_get("doc-branch","trunk"); |
| 1547 | int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0; |
| 1548 | double rTime; |
| 1549 | char *zBrUuid; |
| 1550 | if( ckid==0 ) return; |
| 1551 | if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" |
| 1552 | " AND NOT idxed", ckid) ) return; |
| 1553 | |
| 1554 | /* If we get this far, it means that changes to 'd' entries are |
| 1555 | ** required. */ |
| 1556 | rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); |
| 1557 | zBrUuid = db_text("","SELECT substr(uuid,1,20) FROM blob WHERE rid=%d",ckid); |
| 1558 | db_multi_exec( |
| 1559 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1560 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1561 | "INSERT OR IGNORE INTO current_docs(rid, name)" |
| 1562 | " SELECT blob.rid, foci.filename FROM foci, blob" |
| @@ -1576,14 +1562,14 @@ | |
| 1576 | db_multi_exec( |
| 1577 | "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" |
| 1578 | " SELECT 'd', rid, name, 0," |
| 1579 | " title('d',rid,name)," |
| 1580 | " body('d',rid,name)," |
| 1581 | " printf('/doc/%q/%%s',urlencode(name))," |
| 1582 | " %.17g" |
| 1583 | " FROM current_docs", |
| 1584 | zBrUuid, rTime |
| 1585 | ); |
| 1586 | db_multi_exec( |
| 1587 | "INSERT INTO ftsidx(docid,title,body)" |
| 1588 | " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" |
| 1589 | ); |
| 1590 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -973,11 +973,10 @@ | |
| 973 | unsigned int srchFlags, /* What to search over */ |
| 974 | int fDebug /* Extra debugging output */ |
| 975 | ){ |
| 976 | Stmt q; |
| 977 | int nRow = 0; |
| 978 | |
| 979 | srchFlags = search_restrict(srchFlags); |
| 980 | if( srchFlags==0 ) return 0; |
| 981 | search_sql_setup(g.db); |
| 982 | add_content_sql_commands(g.db); |
| @@ -995,28 +994,17 @@ | |
| 994 | " ORDER BY score DESC, date DESC;"); |
| 995 | while( db_step(&q)==SQLITE_ROW ){ |
| 996 | const char *zUrl = db_column_text(&q, 0); |
| 997 | const char *zSnippet = db_column_text(&q, 1); |
| 998 | const char *zLabel = db_column_text(&q, 2); |
| 999 | if( nRow==0 ){ |
| 1000 | @ <ol> |
| 1001 | } |
| 1002 | nRow++; |
| 1003 | @ <li><p><a href='%R%T(zUrl)'>%h(zLabel)</a> |
| 1004 | if( fDebug ){ |
| 1005 | @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4)) |
| 1006 | } |
| 1007 | @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li> |
| 1008 | } |
| 1009 | db_finalize(&q); |
| 1010 | if( nRow ){ |
| @@ -1544,19 +1532,17 @@ | |
| 1532 | */ |
| 1533 | static void search_update_doc_index(void){ |
| 1534 | const char *zDocBr = db_get("doc-branch","trunk"); |
| 1535 | int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0; |
| 1536 | double rTime; |
| 1537 | if( ckid==0 ) return; |
| 1538 | if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" |
| 1539 | " AND NOT idxed", ckid) ) return; |
| 1540 | |
| 1541 | /* If we get this far, it means that changes to 'd' entries are |
| 1542 | ** required. */ |
| 1543 | rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); |
| 1544 | db_multi_exec( |
| 1545 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1546 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1547 | "INSERT OR IGNORE INTO current_docs(rid, name)" |
| 1548 | " SELECT blob.rid, foci.filename FROM foci, blob" |
| @@ -1576,14 +1562,14 @@ | |
| 1562 | db_multi_exec( |
| 1563 | "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" |
| 1564 | " SELECT 'd', rid, name, 0," |
| 1565 | " title('d',rid,name)," |
| 1566 | " body('d',rid,name)," |
| 1567 | " printf('/doc/%T/%%s',urlencode(name))," |
| 1568 | " %.17g" |
| 1569 | " FROM current_docs", |
| 1570 | zDocBr, rTime |
| 1571 | ); |
| 1572 | db_multi_exec( |
| 1573 | "INSERT INTO ftsidx(docid,title,body)" |
| 1574 | " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" |
| 1575 | ); |
| 1576 |