Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Fixes to search. (1) Keep forum search up-to-date. (2) Do not add items to search if they are pending moderation. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
5e28febf2bc03d2bd7a614c4085ced24 |
| User & Date: | drh 2020-04-05 19:44:06.860 |
Context
|
2020-04-06
| ||
| 15:03 | Limit the displayed length of a forum-post to 50em using CSS. Longer posts scroll. ... (check-in: 421955cdf7 user: drh tags: trunk) | |
|
2020-04-05
| ||
| 23:45 | Match the COMMAND and WEBPAGE names with _cmd and _page functions; [https://fossil-scm.org/forum/forumpost/045bffda68|forumpost/045bffda68] ... (check-in: 06afb7022f user: ashepilko tags: api-cleanup) | |
| 19:44 | Fixes to search. (1) Keep forum search up-to-date. (2) Do not add items to search if they are pending moderation. ... (check-in: 5e28febf2b user: drh tags: trunk) | |
| 19:02 | Improved processing of timestamp strings used as check-in identifiers. The ISO8601 date without punctuation (digits only) is now accept on the tag:date format. Also, incomplete ISO8601 date/time values are rounding up instead of rounded down, such that the match on 20200101 actually finds a check-in on 2020-01-01 (if any) rather than the last check-in on 2019-12-31. ... (check-in: a5f3103111 user: drh tags: trunk) | |
Changes
Changes to src/attach.c.
| ︙ | ︙ | |||
543 544 545 546 547 548 549 |
cgi_redirectf("%R/tktview/%!S", zTktUuid);
}else{
cgi_redirectf("%R/wiki?name=%t", zWikiName);
}
return;
}
if( strcmp(zModAction,"approve")==0 ){
| | | 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 |
cgi_redirectf("%R/tktview/%!S", zTktUuid);
}else{
cgi_redirectf("%R/wiki?name=%t", zWikiName);
}
return;
}
if( strcmp(zModAction,"approve")==0 ){
moderation_approve('a', rid);
}
}
style_header("Attachment Details");
style_submenu_element("Raw", "%R/artifact/%s", zUuid);
if(fShowContent){
style_submenu_element("Line Numbers", "%R/ainfo/%s%s", zUuid,
((zLn&&*zLn) ? "" : "?ln=0"));
|
| ︙ | ︙ |
Changes to src/forum.c.
| ︙ | ︙ | |||
1016 1017 1018 1019 1020 1021 1022 |
cgi_redirectf("%R/forumpost/%S",P("fpid"));
return;
}
isCsrfSafe = cgi_csrf_safe(1);
if( g.perm.ModForum && isCsrfSafe ){
if( P("approve") ){
const char *zUserToTrust;
| | | 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 |
cgi_redirectf("%R/forumpost/%S",P("fpid"));
return;
}
isCsrfSafe = cgi_csrf_safe(1);
if( g.perm.ModForum && isCsrfSafe ){
if( P("approve") ){
const char *zUserToTrust;
moderation_approve('f', fpid);
if( g.perm.AdminForum
&& PB("trust")
&& (zUserToTrust = P("trustuser"))!=0
){
db_multi_exec("UPDATE user SET cap=cap||'4' "
"WHERE login=%Q AND cap NOT GLOB '*4*'",
zUserToTrust);
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
1020 1021 1022 1023 1024 1025 1026 |
/*NOTREACHED*/
}else{
cgi_redirectf("%R/modreq");
/*NOTREACHED*/
}
}
if( strcmp(zModAction,"approve")==0 ){
| | | 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 |
/*NOTREACHED*/
}else{
cgi_redirectf("%R/modreq");
/*NOTREACHED*/
}
}
if( strcmp(zModAction,"approve")==0 ){
moderation_approve('w', rid);
}
}
style_header("Update of \"%h\"", pWiki->zWikiTitle);
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
zDate = db_text(0, "SELECT datetime(%.17g)", pWiki->rDate);
style_submenu_element("Raw", "artifact/%s", zUuid);
style_submenu_element("History", "whistory?name=%t", pWiki->zWikiTitle);
|
| ︙ | ︙ | |||
2421 2422 2423 2424 2425 2426 2427 |
/*NOTREACHED*/
}else{
cgi_redirectf("%R/modreq");
/*NOTREACHED*/
}
}
if( strcmp(zModAction,"approve")==0 ){
| | | 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 |
/*NOTREACHED*/
}else{
cgi_redirectf("%R/modreq");
/*NOTREACHED*/
}
}
if( strcmp(zModAction,"approve")==0 ){
moderation_approve('t', rid);
}
}
zTktTitle = db_table_has_column("repository", "ticket", "title" )
? db_text("(No title)",
"SELECT title FROM ticket WHERE tkt_uuid=%Q", zTktName)
: 0;
style_header("Ticket Change Details");
|
| ︙ | ︙ |
Changes to src/manifest.c.
| ︙ | ︙ | |||
2057 2058 2059 2060 2061 2062 2063 |
c = fossil_strcmp(pA->zName, pB->zName);
}
return c;
}
/*
** Scan artifact rid/pContent to see if it is a control artifact of
| | > | 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 |
c = fossil_strcmp(pA->zName, pB->zName);
}
return c;
}
/*
** Scan artifact rid/pContent to see if it is a control artifact of
** any type:
**
** * Manifest
** * Control
** * Wiki Page
** * Ticket Change
** * Cluster
** * Attachment
** * Event
** * Forum post
**
** If the input is a control artifact, then make appropriate entries
** in the auxiliary tables of the database in order to crosslink the
** artifact.
**
** If global variable g.xlinkClusterOnly is true, then ignore all
** control artifacts other than clusters.
|
| ︙ | ︙ | |||
2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 |
blob_reset(&comment);
}
if( p->type==CFTYPE_FORUM ){
int froot, fprev, firt;
char *zFType;
char *zTitle;
schema_forum();
froot = p->zThreadRoot ? uuid_to_rid(p->zThreadRoot, 1) : rid;
fprev = p->nParent ? uuid_to_rid(p->azParent[0],1) : 0;
firt = p->zInReplyTo ? uuid_to_rid(p->zInReplyTo,1) : 0;
db_multi_exec(
"REPLACE INTO forumpost(fpid,froot,fprev,firt,fmtime)"
"VALUES(%d,%d,nullif(%d,0),nullif(%d,0),%.17g)",
p->rid, froot, fprev, firt, p->rDate
| > | 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 |
blob_reset(&comment);
}
if( p->type==CFTYPE_FORUM ){
int froot, fprev, firt;
char *zFType;
char *zTitle;
schema_forum();
search_doc_touch('f', rid, 0);
froot = p->zThreadRoot ? uuid_to_rid(p->zThreadRoot, 1) : rid;
fprev = p->nParent ? uuid_to_rid(p->azParent[0],1) : 0;
firt = p->zInReplyTo ? uuid_to_rid(p->zInReplyTo,1) : 0;
db_multi_exec(
"REPLACE INTO forumpost(fpid,froot,fprev,firt,fmtime)"
"VALUES(%d,%d,nullif(%d,0),nullif(%d,0),%.17g)",
p->rid, froot, fprev, firt, p->rDate
|
| ︙ | ︙ |
Changes to src/moderate.c.
| ︙ | ︙ | |||
145 146 147 148 149 150 151 | } db_end_transaction(0); } /* ** Approve an object held for moderation. */ | | | > | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
}
db_end_transaction(0);
}
/*
** Approve an object held for moderation.
*/
void moderation_approve(char class, int rid){
if( !moderation_pending(rid) ) return;
db_begin_transaction();
db_multi_exec(
"DELETE FROM private WHERE rid=%d;"
"INSERT OR IGNORE INTO unclustered VALUES(%d);"
"INSERT OR IGNORE INTO unsent VALUES(%d);",
rid, rid, rid
);
db_multi_exec("DELETE FROM modreq WHERE objid=%d", rid);
admin_log("Approved moderation of rid %c-%d.", class, rid);
if( class!='a' ) search_doc_touch(class, rid, 0);
db_end_transaction(0);
}
/*
** WEBPAGE: modreq
**
** Show all pending moderation request
|
| ︙ | ︙ |
Changes to src/search.c.
| ︙ | ︙ | |||
1583 1584 1585 1586 1587 1588 1589 |
/*
** The document described by cType,rid,zName is about to be added or
** updated. If the document has already been indexed, then unindex it
** now while we still have access to the old content. Add the document
** to the queue of documents that need to be indexed or reindexed.
*/
void search_doc_touch(char cType, int rid, const char *zName){
| | | 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 |
/*
** The document described by cType,rid,zName is about to be added or
** updated. If the document has already been indexed, then unindex it
** now while we still have access to the old content. Add the document
** to the queue of documents that need to be indexed or reindexed.
*/
void search_doc_touch(char cType, int rid, const char *zName){
if( search_index_exists() && !content_is_private(rid) ){
char zType[2];
zType[0] = cType;
zType[1] = 0;
search_sql_setup(g.db);
db_multi_exec(
"DELETE FROM ftsidx WHERE docid IN"
" (SELECT rowid FROM ftsdocs WHERE type=%Q AND rid=%d AND idxed)",
|
| ︙ | ︙ |