Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the ability to edit check-in comments and users from the web interface. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
f0474b87b0128227dfd60be6f4f8ddeb |
| User & Date: | drh 2008-07-19 18:18:47.000 |
Context
|
2008-07-20
| ||
| 15:30 | Fix a bug that prevents the /tktnew page from working with no login. ... (check-in: 449559394a user: drh tags: trunk) | |
|
2008-07-19
| ||
| 18:18 | Add the ability to edit check-in comments and users from the web interface. ... (check-in: f0474b87b0 user: drh tags: trunk) | |
| 16:03 | Allow Admin user to changes user information. Add a "User" link on the main menu for Admin users. ... (check-in: f8831f447a user: drh tags: trunk) | |
Changes
Changes to src/info.c.
| ︙ | ︙ | |||
301 302 303 304 305 306 307 |
int rid;
int isLeaf;
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
rid = name_to_rid(PD("name","0"));
if( rid==0 ){
| | > > > > > | > > > > > | > > | > > > > > | > > > > > > | | 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 |
int rid;
int isLeaf;
login_check_credentials();
if( !g.okRead ){ login_needed(); return; }
rid = name_to_rid(PD("name","0"));
if( rid==0 ){
style_header("Baseline Information Error");
@ No such object: %h(g.argv[2])
style_footer();
return;
}
isLeaf = !db_exists("SELECT 1 FROM plink WHERE pid=%d", rid);
db_prepare(&q,
"SELECT uuid, datetime(mtime, 'localtime'), user, comment"
" FROM blob, event"
" WHERE blob.rid=%d"
" AND event.objid=%d",
rid, rid
);
if( db_step(&q)==SQLITE_ROW ){
const char *zUuid = db_column_text(&q, 0);
char *zTitle = mprintf("Baseline [%.10s]", zUuid);
char *zEUser, *zEComment;
const char *zUser;
const char *zComment;
style_header(zTitle);
login_anonymous_available();
free(zTitle);
zEUser = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_USER, rid);
zEComment = db_text(0,
"SELECT value FROM tagxref WHERE tagid=%d AND rid=%d",
TAG_COMMENT, rid);
zUser = db_column_text(&q, 2);
zComment = db_column_text(&q, 3);
@ <div class="section">Overview</div>
@ <p><table class="label-value">
@ <tr><th>SHA1 Hash:</th><td>%s(zUuid)</td></tr>
@ <tr><th>Date:</th><td>%s(db_column_text(&q, 1))</td></tr>
if( g.okSetup ){
@ <tr><th>Record ID:</th><td>%d(rid)</td></tr>
}
if( zEUser ){
@ <tr><th>Edited User:</td><td>%h(zEUser)</td></tr>
@ <tr><th>Original User:</th><td>%h(zUser)</td></tr>
}else{
@ <tr><th>User:</td><td>%h(zUser)</td></tr>
}
if( zEComment ){
@ <tr><th>Edited Comment:</th><td>%w(zEComment)</td></tr>
@ <tr><th>Original Comment:</th><td>%w(zComment)</td></tr>
}else{
@ <tr><th>Comment:</th><td>%w(zComment)</td></tr>
}
@ </td></tr>
if( g.okHistory ){
@ <tr><th>Timelines:</th><td>
@ <a href="%s(g.zBaseURL)/timeline?p=%d(rid)">ancestors</a>
@ | <a href="%s(g.zBaseURL)/timeline?d=%d(rid)">descendants</a>
@ | <a href="%s(g.zBaseURL)/timeline?d=%d(rid)&p=%d(rid)">both</a>
@ </td></tr>
@ <tr><th>Commands:</th>
@ <td>
@ <a href="%s(g.zBaseURL)/vdiff/%d(rid)">diff</a>
@ | <a href="%s(g.zBaseURL)/zip/%s(zUuid).zip">ZIP archive</a>
@ | <a href="%s(g.zBaseURL)/artifact/%d(rid)">manifest</a>
if( g.okWrite ){
@ | <a href="%s(g.zBaseURL)/vedit?r=%d(rid)">edit</a>
}
@ </td>
@ </tr>
}
@ </table></p>
}else{
style_header("Baseline Information");
login_anonymous_available();
}
db_finalize(&q);
showTags(rid, "");
@ <div class="section">Files Changed</div>
@ <ul>
db_prepare(&q,
"SELECT name, pid, fid"
" FROM mlink, filename"
" WHERE mid=%d"
" AND filename.fnid=mlink.fnid",
rid
|
| ︙ | ︙ | |||
923 924 925 926 927 928 929 |
" WHERE rid=%d AND tagname LIKE 'tkt-%%'", rid) ){
tinfo_page();
}else
{
artifact_page();
}
}
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 |
" WHERE rid=%d AND tagname LIKE 'tkt-%%'", rid) ){
tinfo_page();
}else
{
artifact_page();
}
}
/*
** WEBPAGE: vedit
** URL: vedit?r=RID&c=NEWCOMMENT&u=NEWUSER
**
** Present a dialog for updating properties of a baseline:
**
** * The check-in user
** * The check-in comment
** * The background color.
*/
void vedit_page(void){
int rid;
const char *zComment;
const char *zNewComment;
const char *zUser;
const char *zNewUser;
char *zUuid;
Blob comment;
login_check_credentials();
if( !g.okWrite ){ login_needed(); return; }
rid = atoi(PD("r","0"));
zComment = db_text(0, "SELECT coalesce(ecomment,comment)"
" FROM event WHERE objid=%d", rid);
if( zComment==0 ) fossil_redirect_home();
zNewComment = PD("c",zComment);
zUser = db_text(0, "SELECT coalesce(euser,user)"
" FROM event WHERE objid=%d", rid);
if( zUser==0 ) fossil_redirect_home();
zNewUser = PD("u",zUser);
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
if( P("cancel") ){
cgi_redirectf("vinfo?name=%d", rid);
}
if( P("apply") ){
Blob ctrl;
char *zDate;
int nChng = 0;
blob_zero(&ctrl);
zDate = db_text(0, "SELECT datetime('now')");
zDate[10] = 'T';
blob_appendf(&ctrl, "D %s\n", zDate);
if( strcmp(zComment,zNewComment)!=0 ){
nChng++;
blob_appendf(&ctrl, "T +comment %s %F\n", zUuid, zNewComment);
}
if( strcmp(zUser,zNewUser)!=0 ){
nChng++;
blob_appendf(&ctrl, "T +user %s %F\n", zUuid, zNewUser);
}
if( nChng>0 ){
int nrid;
Blob cksum;
blob_appendf(&ctrl, "U %F\n", g.zLogin);
md5sum_blob(&ctrl, &cksum);
blob_appendf(&ctrl, "Z %b\n", &cksum);
db_begin_transaction();
nrid = content_put(&ctrl, 0, 0);
manifest_crosslink(nrid, &ctrl);
db_end_transaction(0);
}
cgi_redirectf("vinfo?name=%d", rid);
}
blob_init(&comment, zNewComment, -1);
zUuid[10] = 0;
style_header("Edit Baseline [%s]", zUuid);
@ <p>Make changes to the User and Comment for baseline
@ [<a href="vinfo?name=%d(rid)">%s(zUuid)</a>] then press the
@ "Apply Changes" button.</p>
@ <form action="%s(g.zBaseURL)/vedit" method="POST">
@ <input type="hidden" name="r" value="%d(rid)">
@ <p>
@ <b>User:</b> <input type="text" name="u" size="20" value="%h(zNewUser)">
@ </p>
@ <p><b>Comment:</b></b><br />
wiki_convert(&comment, 0, WIKI_INLINE);
@ <br /><textarea name="c" rows="10" cols="80">%h(zNewComment)</textarea></p>
@ <blockquote>
@ <input type="submit" name="preview" value="Preview">
@ <input type="submit" name="apply" value="Apply Changes">
@ <input type="submit" name="cancel" value="Cancel">
@ </blockquote>
@ </form>
style_footer();
}
|