簡易型 看板我的最愛 for SOB

看板SetupBBS作者時間22年前 (2003/07/20 15:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
// 原本發在雄中 SYSOP 板的轉到這邊予大家參考 /* 紅色 變更 / 黃色 新增 / 綠色 刪除 / 天藍色 選擇 / 藍色 注意 */ // src/maple/board.c int brc_size, brc_changed = 0; int brc_list[BRC_MAXNUM], brc_num; int favor = 0; char brc_buf[BRC_MAXSIZE]; char brc_name[BRC_STRLEN]; /* woju Ref: bbs.c: brdperm(char* brdname, char* userid) */ /* 新增此函式 */ /* ATS 1.20 */ int is_favor(char *cboard) { char fpath[80]; setuserfile(fpath, "favor_boards"); return belong(fpath, cboard); } /* 到這裡 */ /* 請照著下面修改 或依貴站狀況變更之 */ int Ben_Perm(boardheader *bptr) { register int level, fg = 0; register char *ptr; char buf[64], manager[IDLEN + 1]; level = bptr->level; if((level & PERM_POSTMASK) || HAS_PERM(level)) fg = 1; else { ptr = bptr->BM; if(is_BM(ptr)) fg = 1; else if((level & 0xffff) != PERM_SYSOP) fg = 0; /* 祕密看板:核對首席 */ /* 板主的好友名單 */ else { strncpy(manager, ptr, IDLEN + 1); if(ptr = strchr(manager, '/')) ptr[0] = '\0'; sethomefile(buf, manager, fn_overrides); fg = belong(buf, cuser.userid); } } if(!fg) return 0; else if(!favor) return 1; else return is_favor(bptr->brdname); } /* 到這裡 */ static void load_boards() { ... } char *choosebrdhelp[] = { ... "(y) 列出/不列出所有看板", /* 中文敘述請依需求變更之 */ "(f) 將看板加入 我的最愛 (一般看板列表)", "(u) 將看板移出 我的最愛 (我的最愛列表)", "(v/V) 通通看完/全部未讀", "(S) 按照字母/分類排序", "(/) 搜尋看板", NULL }; static void choose_board(int newflag) { ... case 'h': show_help(choosebrdhelp); show_brdlist(head, 1, newflag); break; /* 新增本功能鍵 本段未做最佳化處理 可自行依需要更改其效能 */ /* Dopin : favor list maintain */ case 'u': case 'f': { char ask[2]; FILE *fp; if(!HAS_PERM(PERM_BASIC)) break; ptr = &nbrd[num]; setuserfile(genbuf, "favor_boards"); *ask = 1; if(ch == 'f') { if(favor) break; if(belong(genbuf, ptr->name)) outmsg("我的最愛列表中已存在此看板..."); else { getdata(b_lines, 0, "確定將此看板加入 我的最愛 y/N ? ", ask, 2, LCECHO, 0); if(*ask == 'y') { fp = fopen(genbuf, "a+"); fprintf(fp, "%s\n", ptr->name); fclose(fp); sprintf(genbuf, "已成功\加入 %s 看板", ptr->name); outmsg(genbuf); } } } else { if(!favor) break; if(!belong(genbuf, ptr->name)) outmsg("我的最愛看板列表中無此看板"); else { getdata(b_lines, 0, "確定從看板我的最愛中移除 y/N ? ", ask, 2, LCECHO, 0); if(*ask == 'y') { if(remove_file_line(genbuf, ptr->name, 'B')) outmsg("看板移除失敗 或不存在於檔案設定中"); else { sprintf(genbuf, "看板 %s 移除成功\", ptr->name); outmsg(genbuf); *ask = 1; } } } } if(*ask == 'y' || *ask == 1) { outs(" 鍵入任意鍵繼續 ..."); igetch(); } if(favor && *ask == 1) load_boards(); show_brdlist(head, 1, newflag, num); break; } /* 到這裡 */ case Ctrl('A'): Announce(); ... } // src/maple/menu.c int refscreen = NA; extern char *boardprefix; extern int favor; extern void load_boards(); /* ----------------------------------------------------- */ /* main menu */ /* ----------------------------------------------------- */ /* 新增此函式 */ /* ATS 1.20 */ static int Favor() { favor = 1; load_boards(); Boards(); favor = 0; load_boards(); return 0; } /* 到這裡 */ static int admin() { ... } struct commands cmdlist[] = { ... Announce, 0, "AAnnounce 【 精華公佈欄 】", Boards, 0, "BBoards 【 佈告討論區 】", Class, 0, "CClass 【 分組討論區 】", Favor, PERM_BASIC, "FFavor 【 我的最愛 】", Mail, PERM_BASIC, "MMail 【 私人信件區 】", Talk, 0, "TTalk 【 休閒聊天區 】", ... } // 如有需要 也可將 Favor() 加到 classlist[] 當做分類看板選擇的一部份 不過函 // 式的原型就要寫前面點較好 ... 用法就是在看板列表用 'f' 加入 我的最愛列表 // 中 用 'u' 移出 此功能 porting 自 ATSVersion (反正一家親 :p) [示範站台] telnet://ftp.ats.idv.tw/ (ID: test PASS: 12345) [原始檔案 for FreeBSD (RFC 822/2045/2047 / ForceBoard / Favor Board OK)] ftp://ftp.ats.idv.tw/pub/SOB/maple_favor_ok.tgz <可抓來將原先的釋出覆蓋之 ftp://ftp.ats.idv.tw/pub/SOB/sob_rfc2047.tar.gz> -- Origin: Atlantis DN: bbs.ats.idv.tw IP : 203.73.231.195 ST: atlantis
文章代碼(AID): #_6aLt00 (SetupBBS)
文章代碼(AID): #_6aLt00 (SetupBBS)