From ecdf6203e40698b62611c1099bb010cdd5924924 Mon Sep 17 00:00:00 2001 From: piaip Date: Wed, 6 Jul 2005 06:06:02 +0000 Subject: help update, fix mail title unchanged outside vedit (partial?) and 'search for recommends' patch by ledia@ptt, thanks. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2903 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- include/modes.h | 3 ++- mbbsd/mail.c | 3 ++- mbbsd/read.c | 37 ++++++++++++++++++++++++++----------- sample/etc/board.help | 30 ++++++++++++++---------------- 4 files changed, 44 insertions(+), 29 deletions(-) diff --git a/include/modes.h b/include/modes.h index 45d1b92a..391efadd 100644 --- a/include/modes.h +++ b/include/modes.h @@ -136,7 +136,8 @@ #define RS_MARK 0x20 /* search the first article */ #define RS_AUTHOR 0x40 /* search author's article */ #define RS_NEWPOST 0x80 /* search new posts */ -#define RS_NOKEYWORD 0x100 /* search new posts */ +#define RS_KEYWORD_EXCLUDE 0x100 /* exclude keyword */ +#define RS_RECOMMEND 0x200 /* search by recommends */ #define CURSOR_FIRST (RS_TITLE | RS_FIRST) #define CURSOR_NEXT (RS_TITLE | RS_FORWARD) diff --git a/mbbsd/mail.c b/mbbsd/mail.c index 5e9be2fe..e0195689 100644 --- a/mbbsd/mail.c +++ b/mbbsd/mail.c @@ -316,12 +316,13 @@ do_send(const char *userid, const char *title) sethomepath(genbuf, userid); stampfile(genbuf, &mhdr); strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner)); - strncpy(mhdr.title, save_title, TTLEN); if (vedit(genbuf, YEA, NULL) == -1) { unlink(genbuf); clear(); return -2; } + /* why not make title here? */ + strncpy(mhdr.title, save_title, TTLEN); clear(); sethomefile(fpath, userid, FN_OVERRIDES); i = belong(fpath, cuser.userid); diff --git a/mbbsd/read.c b/mbbsd/read.c index 6f10aa25..ca62d426 100644 --- a/mbbsd/read.c +++ b/mbbsd/read.c @@ -394,7 +394,7 @@ select_read(const keeploc_t * locmem, int sr_mode) char keyword[TTLEN + 1] = ""; char genbuf[MAXPATHLEN], *p = strstr(currdirect, "SR."); static int _mode = 0; - int len, fd, fr, i, count=0, reference = 0; + int len, fd, fr, i, count=0, reference = 0, n_recommend = 0; fileheader_t *fh = &headers[locmem->crs_ln - locmem->top_ln]; STATINC(STAT_SELECTREAD); @@ -416,14 +416,22 @@ select_read(const keeploc_t * locmem, int sr_mode) "%s:%s\n", currboard, keyword); #endif } - else if(sr_mode & RS_NOKEYWORD) + else if(sr_mode & RS_KEYWORD_EXCLUDE) { if(!(currmode & MODE_SELECT) || !getdata(b_lines, 0, "增加條件 排除標題:", keyword, TTLEN, DOECHO)) return READ_REDRAW; } - else + else if (sr_mode & RS_RECOMMEND) + { + if(currstat != RMAIL && ( + !getdata(b_lines, 0, + (currmode & MODE_SELECT) ? "增加條件 推文數:":"最低推數:", + keyword, 7, LCECHO) || (n_recommend = atoi(keyword)) <= 0 )) + return READ_REDRAW; + } + else { if(p && _mode & sr_mode & (RS_TITLE | RS_NEWPOST | RS_MARK)) return DONOTHING; @@ -458,24 +466,27 @@ select_read(const keeploc_t * locmem, int sr_mode) len /= sizeof(fileheader_t); for( i = 0 ; i < len ; ++i ){ reference++; - if( sr_mode & RS_MARK && + if( (sr_mode & RS_MARK) && !(fhs[i].filemode & FILE_MARKED) ) continue; - else if(sr_mode & RS_NEWPOST && + else if((sr_mode & RS_NEWPOST) && !strncmp(fhs[i].title, "Re:", 3)) continue; - else if(sr_mode & RS_AUTHOR && + else if((sr_mode & RS_AUTHOR) && !strcasestr(fhs[i].owner, keyword)) continue; - else if(sr_mode & RS_KEYWORD && + else if((sr_mode & RS_KEYWORD) && !strcasestr(fhs[i].title, keyword)) continue; - else if(sr_mode & RS_NOKEYWORD && + else if(sr_mode & RS_KEYWORD_EXCLUDE && strcasestr(fhs[i].title, keyword)) continue; - else if(sr_mode & RS_TITLE && + else if((sr_mode & RS_TITLE) && strcmp(subject(fhs[i].title), keyword)) continue; + else if ((sr_mode & RS_RECOMMEND) && + fhs[i].recommend < n_recommend ) + continue; ++count; if(p == NULL) { @@ -555,7 +566,11 @@ i_read_key(const onekey_t * rcmdlist, keeploc_t * locmem, case Ctrl('H'): mode = select_read(locmem, RS_NEWPOST); break; - + + case 'Z': + mode = select_read(locmem, RS_RECOMMEND); + break; + case 'a': case 'A': mode = select_read(locmem, RS_AUTHOR); @@ -575,7 +590,7 @@ i_read_key(const onekey_t * rcmdlist, keeploc_t * locmem, break; case '!': - mode = select_read(locmem, RS_NOKEYWORD); + mode = select_read(locmem, RS_KEYWORD_EXCLUDE); break; case '=': diff --git a/sample/etc/board.help b/sample/etc/board.help index 3a702134..063b458d 100644 --- a/sample/etc/board.help +++ b/sample/etc/board.help @@ -1,23 +1,21 @@ 【 全功能看板操作說明 】 【 基本命令 】 - (p)(↑) 上移一篇文章 (^P/^O/^V)發表文章/競標/活動連署 - (n)(↓) 下移一篇文章 (d) 刪除文章 - (P)(PgUp) 上移一頁 (S) 串連相關文章 - (N)(PgDn) 下移一頁 (##) 跳到 ## 號文章 - (r)(→) 閱讀此篇文章 ($) 跳到最後一篇文章 + (p/↑)/(n/↓) 上移/下移一篇文章 (數字鍵) 跳到指定號碼的文章 + (P/PgUp)(N/PgDn) 下移/下移一頁 (Home)/(End/$) 跳到首篇/末篇文章 + (r)(→) 閱讀此篇文章 (=[]<>-+) 主題式閱讀 + (^P)/(y)/(X) 發表/回覆/推薦文章 (F/U)/(x) 轉寄至信箱/轉錄至其它看板 【 進階命令 】 - (tab)/z 文摘模式/精華區 (a/A)(^Q) 找尋作者/作者資料 - (b/f) 展讀備忘錄/參與賭盤 (?)(/) 找尋標題 - (V/R) 投票/查詢投票結果 (^W)(X) 我在哪裡/推薦文章/參與競標 - (x)(w) 轉錄文章/丟水球 (=)/([]<>-+) 找尋首篇文章/主題式閱讀 - (F) 文章寄回Internet郵箱 (U) 將文章 uuencode 後寄回郵箱 - (E)/(Q) 重編文章/查詢價格/匿名(^H) 列出所有的主要標題 + (/)(?)/(a/A)/(Z) 搜尋 關鍵字/作者/推文數 (^Q)/(w) 作者資料/丟作者水球 + (G)/(S) 搜尋 保留標記/標題 (^H)/(!) 只列主要標題/不列關鍵字 + (z)/(TAB)/(b) 閱讀精華區/文摘/進板畫面 (^W) 我在哪裡 + (^O)/(X)/(f) 競標/下標/參與賭盤 (^V)/(V)/(R) 活動連署/投票/投票結果 + (d)/(E)/(Q) 刪文/重編文章/查詢價格或匿名 (S) 串連相關文章 【 板主命令 】 - (M/o) 舉行投票/編私投票名單 (m/c/g/^Z) 保留/選錄精華/文摘/置底 - (D) 刪除一段範圍的文章 (T/B) 重編文章標題/重編看板標題 - (I/^E) 開放/禁止看板推薦/發文(t/^D) 標記文章/砍除標記的文章 - (O)/(i) 發表注意事項 文章類別 (H)/(Y) 看板隱藏/現身 取消推薦文章 - (^G) 舉辦賭盤/停止下注/開獎(W/K/v) 編進板畫面/水桶名單/可見名單 + (M/o) 舉行投票/編輯投票名單 (m/c/g/^Z) 保留/選錄精華/文摘/置底 + (D) 刪除一段範圍的文章 (T/B) 重編文章標題/重編看板標題 + (I/^E) 開放/禁止看板推薦/發文 (t/^D) 標記文章/砍除標記的文章 + (O)/(i) 發表注意事項 文章類別 (H)/(Y) 切換看板隱藏/取消推薦文章 + (^G) 舉辦賭盤/停止下注/開獎 (W)/(K)/(v) 編進板畫面/水桶名單/可見名單 -- cgit v1.2.3