Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Clean up some harmless compiler warnings. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
0a4193be588ae3a2d3288e62d861e3b5 |
| User & Date: | drh 2012-11-02 02:41:56.404 |
Context
|
2012-11-02
| ||
| 03:10 | Use local variable when checking for a carriage-return in looks_like_utf8/utf16. Update custom MinGW makefile. ... (check-in: 531b2e2df0 user: mistachkin tags: trunk) | |
| 02:41 | Clean up some harmless compiler warnings. ... (check-in: 0a4193be58 user: drh tags: trunk) | |
| 02:36 | Merge the "moderation" branch into trunk. This adds the ability to have an approval process for edits to Wiki and Tickets, including creating new Wiki and Tickets and adding attachments. Probably there are still some problems, but things are working well enough for trunk. ... (check-in: ba418ee1ce user: drh tags: trunk) | |
Changes
Changes to src/attach.c.
| ︙ | ︙ | |||
356 357 358 359 360 361 362 | const char *zWikiName = 0; /* Wiki page name when attached to Wiki */ const char *zTktUuid = 0; /* Ticket ID when attached to a ticket */ int modPending; /* True if awaiting moderation */ const char *zModAction; /* Moderation action or NULL */ int isModerator; /* TRUE if user is the moderator */ const char *zMime; /* MIME Type */ Blob attach; /* Content of the attachment */ | < | 356 357 358 359 360 361 362 363 364 365 366 367 368 369 |
const char *zWikiName = 0; /* Wiki page name when attached to Wiki */
const char *zTktUuid = 0; /* Ticket ID when attached to a ticket */
int modPending; /* True if awaiting moderation */
const char *zModAction; /* Moderation action or NULL */
int isModerator; /* TRUE if user is the moderator */
const char *zMime; /* MIME Type */
Blob attach; /* Content of the attachment */
login_check_credentials();
if( !g.perm.RdTkt && !g.perm.RdWiki ){ login_needed(); return; }
rid = name_to_rid_www("name");
if( rid==0 ){ fossil_redirect_home(); }
zUuid = db_text("", "SELECT uuid FROM blob WHERE rid=%d", rid);
#if 0
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
1564 1565 1566 1567 1568 1569 1570 | const char *zMime; Blob downloadName; int renderAsWiki = 0; int renderAsHtml = 0; int objType; int asText; const char *zUuid; | < | 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 |
const char *zMime;
Blob downloadName;
int renderAsWiki = 0;
int renderAsHtml = 0;
int objType;
int asText;
const char *zUuid;
if( P("ci") && P("filename") ){
rid = artifact_from_ci_and_filename();
}
if( rid==0 ){
rid = name_to_rid_www("name");
}
|
| ︙ | ︙ |
Changes to src/setup.c.
| ︙ | ︙ | |||
340 341 342 343 344 345 346 |
if( doWrite ){
char c;
char zCap[50], zNm[4];
zNm[0] = 'a';
zNm[2] = 0;
for(i=0, c='a'; c<='z'; c++){
zNm[1] = c;
| | | | 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 |
if( doWrite ){
char c;
char zCap[50], zNm[4];
zNm[0] = 'a';
zNm[2] = 0;
for(i=0, c='a'; c<='z'; c++){
zNm[1] = c;
a[c&0x7f] = (c!='s' || g.perm.Setup) && P(zNm)!=0;
if( a[c&0x7f] ) zCap[i++] = c;
}
zCap[i] = 0;
zPw = P("pw");
zLogin = P("login");
if( strlen(zLogin)==0 ){
style_header("User Creation Error");
|
| ︙ | ︙ | |||
430 431 432 433 434 435 436 |
if( uid ){
zLogin = db_text("", "SELECT login FROM user WHERE uid=%d", uid);
zInfo = db_text("", "SELECT info FROM user WHERE uid=%d", uid);
zCap = db_text("", "SELECT cap FROM user WHERE uid=%d", uid);
zPw = db_text("", "SELECT pw FROM user WHERE uid=%d", uid);
for(i=0; zCap[i]; i++){
char c = zCap[i];
| | | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 |
if( uid ){
zLogin = db_text("", "SELECT login FROM user WHERE uid=%d", uid);
zInfo = db_text("", "SELECT info FROM user WHERE uid=%d", uid);
zCap = db_text("", "SELECT cap FROM user WHERE uid=%d", uid);
zPw = db_text("", "SELECT pw FROM user WHERE uid=%d", uid);
for(i=0; zCap[i]; i++){
char c = zCap[i];
if( c>='a' && c<='z' ) oa[c&0x7f] = " checked=\"checked\"";
}
}
/* figure out inherited permissions */
memset(inherit, 0, sizeof(inherit));
if( fossil_strcmp(zLogin, "developer") ){
char *z1, *z2;
|
| ︙ | ︙ |
Changes to src/tkt.c.
| ︙ | ︙ | |||
424 425 426 427 428 429 430 |
int argc,
const char **argv,
int *argl
){
char *zDate;
const char *zUuid;
int i;
| < | 424 425 426 427 428 429 430 431 432 433 434 435 436 437 |
int argc,
const char **argv,
int *argl
){
char *zDate;
const char *zUuid;
int i;
int nJ = 0;
Blob tktchng, cksum;
login_verify_csrf_secret();
zUuid = (const char *)pUuid;
blob_zero(&tktchng);
zDate = date_in_standard_format("now");
|
| ︙ | ︙ | |||
994 995 996 997 998 999 1000 |
}
rptshow( zRep, zSep, zFilterUuid, tktEncoding );
}
}else{
/* add a new ticket or update an existing ticket */
enum { set,add,history,err } eCmd = err;
int i = 0;
| < | 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 |
}
rptshow( zRep, zSep, zFilterUuid, tktEncoding );
}
}else{
/* add a new ticket or update an existing ticket */
enum { set,add,history,err } eCmd = err;
int i = 0;
Blob tktchng, cksum;
/* get command type (set/add) and get uuid, if needed for set */
if( strncmp(g.argv[2],"set",n)==0 || strncmp(g.argv[2],"change",n)==0 ||
strncmp(g.argv[2],"history",n)==0 ){
if( strncmp(g.argv[2],"history",n)==0 ){
eCmd = history;
|
| ︙ | ︙ |
Changes to src/wiki.c.
| ︙ | ︙ | |||
129 130 131 132 133 134 135 |
char *zTag;
int rid = 0;
int isSandbox;
Blob wiki;
Manifest *pWiki = 0;
const char *zPageName;
char *zBody = mprintf("%s","<i>Empty Page</i>");
| < < | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
char *zTag;
int rid = 0;
int isSandbox;
Blob wiki;
Manifest *pWiki = 0;
const char *zPageName;
char *zBody = mprintf("%s","<i>Empty Page</i>");
login_check_credentials();
if( !g.perm.RdWiki ){ login_needed(); return; }
zPageName = P("name");
if( zPageName==0 ){
style_header("Wiki");
@ <ul>
|
| ︙ | ︙ | |||
297 298 299 300 301 302 303 |
if( zBody==0 && (pWiki = manifest_get(rid, CFTYPE_WIKI))!=0 ){
zBody = pWiki->zWiki;
}
}
if( P("submit")!=0 && zBody!=0 ){
char *zDate;
Blob cksum;
| < | 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
if( zBody==0 && (pWiki = manifest_get(rid, CFTYPE_WIKI))!=0 ){
zBody = pWiki->zWiki;
}
}
if( P("submit")!=0 && zBody!=0 ){
char *zDate;
Blob cksum;
blob_zero(&wiki);
db_begin_transaction();
if( isSandbox ){
db_set("sandbox",zBody,0);
}else{
login_verify_csrf_secret();
zDate = date_in_standard_format("now");
|
| ︙ | ︙ | |||
481 482 483 484 485 486 487 |
if( !g.perm.ApndWiki ){
login_needed();
return;
}
if( P("submit")!=0 && P("r")!=0 && P("u")!=0 ){
char *zDate;
Blob cksum;
| < | 478 479 480 481 482 483 484 485 486 487 488 489 490 491 |
if( !g.perm.ApndWiki ){
login_needed();
return;
}
if( P("submit")!=0 && P("r")!=0 && P("u")!=0 ){
char *zDate;
Blob cksum;
Blob body;
Blob wiki;
Manifest *pWiki = 0;
blob_zero(&body);
if( isSandbox ){
blob_appendf(&body, db_get("sandbox",""));
|
| ︙ | ︙ | |||
812 813 814 815 816 817 818 |
**
** The content of the new page is given by the blob pContent.
*/
int wiki_cmd_commit(char const * zPageName, int isNew, Blob *pContent){
Blob wiki; /* Wiki page content */
Blob cksum; /* wiki checksum */
int rid; /* artifact ID of parent page */
| < | 808 809 810 811 812 813 814 815 816 817 818 819 820 821 |
**
** The content of the new page is given by the blob pContent.
*/
int wiki_cmd_commit(char const * zPageName, int isNew, Blob *pContent){
Blob wiki; /* Wiki page content */
Blob cksum; /* wiki checksum */
int rid; /* artifact ID of parent page */
char *zDate; /* timestamp */
char *zUuid; /* uuid for rid */
rid = db_int(0,
"SELECT x.rid FROM tag t, tagxref x"
" WHERE x.tagid=t.tagid AND t.tagname='wiki-%q'"
" ORDER BY x.mtime DESC LIMIT 1",
|
| ︙ | ︙ |