From 0283b33c66acb173a2cb7bac19a79048c755cd41 Mon Sep 17 00:00:00 2001 From: piaip Date: Fri, 22 Jul 2005 19:33:38 +0000 Subject: option to toggle cp auto log for both entire site def and board conf. also updated board conf (for recommendation/cp auto log) git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2944 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- include/pttstruct.h | 3 +- mbbsd/bbs.c | 100 ++++++++++++++++++++++++++++++++++++++++---------- sample/etc/board.help | 9 +++-- sample/pttbbs.conf | 3 ++ 4 files changed, 90 insertions(+), 25 deletions(-) diff --git a/include/pttstruct.h b/include/pttstruct.h index 348187fc..2104cf0e 100644 --- a/include/pttstruct.h +++ b/include/pttstruct.h @@ -216,9 +216,8 @@ typedef struct boardheader_t { #define BRD_LOCALSAVE 000400000 /* 預設 Local Save */ #define BRD_RESTRICTEDPOST 001000000 /* 板友才能發文 */ #define BRD_GUESTPOST 002000000 /* guest能 post */ -#ifdef USE_COOLDOWN #define BRD_COOLDOWN 004000000 /* 冷靜 */ -#endif +#define BRD_NOCPLOG 010000000 /* 不會自動留轉錄記錄 */ #define BRD_LINK_TARGET(x) ((x)->postexpire) #define GROUPOP() (currmode & MODE_GROUPOP) diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index fb69613b..819f7455 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -1169,16 +1169,16 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct) addsignature(xptr, 0); fclose(xptr); - /* now point bp to new bord */ - bp = getbcache(getbnum(xboard)); - - /* add cp log */ +#ifdef AUTO_CP_LOG + /* add cp log. bp is currboard now. */ + if(!(bp->brdattr & BRD_NOCPLOG)) { char buf[MAXPATHLEN]; char bname[STRLEN] = ""; struct tm *ptime = localtime4(&now); int maxlength = 51 +2 - 6; + bp = getbcache(getbnum(xboard)); if ((bp->brdattr & BRD_HIDE) && (bp->brdattr & BRD_POSTMASK)) { /* mosaic it */ @@ -1206,7 +1206,10 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct) cuser.userid, bname, maxlength, "", fromhost, ptime->tm_mon + 1, ptime->tm_mday); do_add_recommend(direct, fhdr, ent, buf, 2); - } + } else +#endif + /* now point bp to new bord */ + bp = getbcache(getbnum(xboard)); /* * Cross fs有問題 } else { unlink(xfpath); link(fname, xfpath); } @@ -2553,29 +2556,88 @@ static int b_changerecommend(int ent, const fileheader_t * fhdr, const char *direct) { boardheader_t *bp=NULL; + int touched = 0; if (!((currmode & MODE_BOARD) || HasUserPerm(PERM_SYSOP))) return DONOTHING; bp = getbcache(currbid); + move(b_lines - 6, 0); clrtobot(); + outs(MSG_SEPERATOR); + outs("\n目前看板設定:\n"); + prints(" - %s 推薦文章\n", + (bp->brdattr & BRD_NORECOMMEND) ? "不可":"可以"); +#ifndef OLDRECOMMEND + prints(" - %s 噓文\n", + ((bp->brdattr & BRD_NORECOMMEND) || (bp->brdattr & BRD_NOBOO)) + ? "不可":"可以"); +#endif +#ifdef AUTO_CP_LOG + prints(" - 轉錄文章時 %s 自動記錄\n", + (bp->brdattr & BRD_NOCPLOG) ? "不會":"會"); +#endif -#ifdef OLDRECOMMEND - bp->brdattr ^= BRD_NORECOMMEND; + switch(tolower(getans("請按 r%s%s 設定可否 推文%s%s: ", +#ifndef OLDRECOMMEND + "/b", #else - if(bp->brdattr & BRD_NOBOO) - bp->brdattr ^= BRD_NORECOMMEND; - if(!(bp->brdattr & BRD_NORECOMMEND) || !(bp->brdattr & BRD_NOBOO)) - bp->brdattr ^= BRD_NOBOO; + "", #endif - - substitute_record(fn_board, bp, sizeof(boardheader_t), currbid); - +#ifdef AUTO_CP_LOG + "/x", +#else + "", +#endif +#ifndef OLDRECOMMEND + "噓文/", +#else + "", +#endif +#ifdef AUTO_CP_LOG + "轉錄自動記錄" +#else + "" +#endif + ))) + { +#ifdef AUTO_CP_LOG + case 'x': + bp->brdattr ^= BRD_NOCPLOG; + touched = 1; + vmsg("已設定為自本板轉錄文章將 %s 自動留下記錄", + (bp->brdattr & BRD_NOCPLOG) ? "不會" : "會" + ); + break; +#endif + case 'r': + bp->brdattr ^= BRD_NORECOMMEND; + touched = 1; #ifdef OLDRECOMMEND - vmsg("本板現在 %s 推薦", - (bp->brdattr & BRD_NORECOMMEND) ? "禁止" : "開放"); + vmsg("本板現在 %s 推薦", + (bp->brdattr & BRD_NORECOMMEND) ? "禁止" : "開放"); + break; #else - vmsg("本板現在 %s 推薦, %s 噓聲", - (bp->brdattr & BRD_NORECOMMEND) ? "禁止" : "開放", - (bp->brdattr & BRD_NOBOO) ? "禁止" : "開放"); + vmsg("本板現在 %s 推薦, %s 噓聲", + (bp->brdattr & BRD_NORECOMMEND) ? "禁止" : "開放", + ((bp->brdattr & BRD_NORECOMMEND)||(bp->brdattr & BRD_NOBOO)) ? "禁止" : "開放"); + break; + case 'b': + if(bp->brdattr & BRD_NORECOMMEND) + bp->brdattr |= BRD_NOBOO; + bp->brdattr ^= BRD_NOBOO; + touched = 1; + if (!(bp->brdattr & BRD_NOBOO)) + bp->brdattr &= ~BRD_NORECOMMEND; + vmsg("本板現在 %s 推薦, %s 噓聲", + (bp->brdattr & BRD_NORECOMMEND) ? "禁止" : "開放", + ((bp->brdattr & BRD_NORECOMMEND)||(bp->brdattr & BRD_NOBOO)) ? "禁止" : "開放"); + break; #endif + default: + vmsg("未改變任何設定"); + break; + } + if(touched) + substitute_record(fn_board, bp, sizeof(boardheader_t), currbid); + return FULLUPDATE; } diff --git a/sample/etc/board.help b/sample/etc/board.help index 0825c75d..28345f5a 100644 --- a/sample/etc/board.help +++ b/sample/etc/board.help @@ -15,7 +15,8 @@ 【 板主命令 】 (M/o) 舉行投票/編輯投票名單 (m/c/g/^Z) 保留/選錄精華/文摘/置底 - (D) 刪除一段範圍的文章 (T/B) 重編文章標題/重編看板標題 - (I/^E) 開放/禁止看板推薦/發文 (t/^D) 標記文章/砍除標記的文章 - (O)/(i) 發表注意事項 文章類別 (H)/(Y) 切換看板隱藏/取消推薦文章 - (^G) 舉辦賭盤/停止下注/開獎 (W)/(K)/(v) 編進板畫面/水桶/可見名單 + (D) 刪除一段範圍的文章 (Y) 取消推薦文章 + (T/B) 重編文章標題/重編看板標題 (t/^D) 標記文章/砍除標記的文章 + (O)/(i) 發表注意事項/文章類別 (W)/(K)/(v) 編進板畫面/水桶/可見名單 + (^G) 舉辦賭盤/停止下注/開獎 (H)/(^E) 切換看板隱藏/禁止發文 + (I) 設定可否推薦文章/轉錄文章自動記錄 diff --git a/sample/pttbbs.conf b/sample/pttbbs.conf index 3ec5fe88..3263bbc9 100644 --- a/sample/pttbbs.conf +++ b/sample/pttbbs.conf @@ -185,6 +185,9 @@ /* 若定義, 則使用舊式推文 */ #define OLDRECOMMEND +/* 若定義, 轉錄會在原文留下記錄 */ +#define AUTO_CP_LOG + /* 贈送信箱 */ //#define ADD_EXMAILBOX 100 -- cgit v1.2.3