作者itoc, 信區: itoc
標題[功能] manage.c 板主自訂發文類別
時間03/08/17
作者: itoc (拯救一個靈魂) 看板: plan
標題: [功能] 發表文章的 prefix 由板主設定
時間: Tue Jun 18 23:36:31 2002 Updated: 2005/05/26
※ 引述《tandrian.bbs@ntcb.twbbs.org.tw (幻域魔城後祖)》之銘言:
> 請選擇文章類別(按 Enter 跳過):
> 類別:1.[公告] 2.[新聞] 3.[閒聊] 4.[文件] 5.[問題] 6.[測試]
> 請問是否可以讓板主自行修改以上的文章類別?? ^^
config.h 要 #define POPUP_ANSWER 及 POST_PREFIX 才可以使用本功能
: manage.c:post_prefix_edit() 新增於 post_memo_edit() 後面
#ifdef POST_PREFIX
/* ----------------------------------------------------- */
/* 板主功能 : 修改發文類別 */
/* ----------------------------------------------------- */
static int
post_prefix_edit(xo)
XO *xo;
{
#define NUM_PREFIX 6
int i;
FILE *fp;
char fpath[64], buf[20], prefix[NUM_PREFIX][20], *menu[NUM_PREFIX + 3];
char *prefix_def[NUM_PREFIX] = /* 預設的類別 */
{
"公告", "測試", "閒聊", "灌水", "無聊", "打混"
};
if (!(bbstate & STAT_BOARD))
return XO_NONE;
i = vans("類別 (D)刪除 (E)修改 (Q)取消?[E] ");
if (i == 'q')
return XO_FOOT;
brd_fpath(fpath, currboard, "prefix");
if (i == 'd')
{
unlink(fpath);
return XO_FOOT;
}
i = 0;
if (fp = fopen(fpath, "r"))
{
for (; i < NUM_PREFIX; i++)
{
if (fscanf(fp, "%10s", buf) != 1)
break;
sprintf(prefix[i], "%d.%s", i + 1, buf);
}
fclose(fp);
}
/* 填滿至 NUM_PREFIX 個 */
for (; i < NUM_PREFIX; i++)
sprintf(prefix[i], "%d.%s", i + 1, prefix_def[i]);
menu[0] = "10";
for (i = 1; i <= NUM_PREFIX; i++)
menu[i] = prefix[i - 1];
menu[NUM_PREFIX + 1] = "0.離開";
menu[NUM_PREFIX + 2] = NULL;
do
{
/* 在 popupmenu 裡面按 左鍵 離開 */
i = pans(3, 20, "文章類別", menu) - '0';
if (i >= 1 && i <= NUM_PREFIX)
{
strcpy(buf, prefix[i - 1] + 2);
if (vget(b_lines, 0, "類別:", buf, 10, GCARRY))
strcpy(prefix[i - 1] + 2, buf);
}
} while (i);
if (fp = fopen(fpath, "w"))
{
for (i = 0; i < NUM_PREFIX; i++)
fprintf(fp, "%s ", prefix[i] + 2);
fclose(fp);
}
return XO_FOOT;
}
#endif /* POST_PREFIX */
: manage.c:post_manage()
"WMemo 編輯進板畫面",
+#ifdef POST_PREFIX
+ "RPrefix 編輯文章類別",
+#endif
...
...
- char *menu = "◎ 板主選單 (B)主題 (W)進板 (M)副板"
+ char *menu = "◎ 板主選單 (B)主題 (W)進板 (R)類別 (M)副板"
...
...
case 'w':
return post_memo_edit(xo);
+#ifdef POST_PREFIX
+ case 'r':
+ return post_prefix_edit(xo);
+#endif
: post.c:do_post()
else /* itoc.020113: 新文章選擇標題分類 */
{
#define NUM_PREFIX 6
- char *prefix[NUM_PREFIX] = {"[公告] ", "[新聞] ", ... "[測試] "};
-
- move(21, 0);
- outs("類別:");
- for (mode = 0; mode < NUM_PREFIX; mode++)
- prints("%d.%s", mode + 1, prefix[mode]);
-
- mode = vget(20, 0, "請選擇文章類別(...):", fpath, 3, DOECHO) - '1';
- if (mode >= 0 && mode < NUM_PREFIX) /* 輸入數字選項 */
- rcpt = prefix[mode];
- else /* 空白跳過 */
- rcpt = NULL;
- }
+ FILE *fp;
+ char prefix[NUM_PREFIX][10];
+
+ brd_fpath(fpath, currboard, "prefix");
+ if (fp = fopen(fpath, "r"))
+ {
+ move(21, 0);
+ outs("類別:");
+ for (mode = 0; mode < NUM_PREFIX; mode++)
+ {
+ if (fscanf(fp, "%9s", fpath) != 1)
+ break;
+ strcpy(prefix[mode], fpath);
+ prints("%d.%s ", mode + 1, fpath);
+ }
+
+ fclose(fp);
+ mode = vget(20, 0, "請選擇文章類別(按 Enter 跳過):",
+ fpath, 3, DOECHO) - '1';
+ if (mode >= 0 && mode < NUM_PREFIX) /* 輸入數字選項 */
+ rcpt = prefix[mode];
+ else /* 空白跳過 */
+ rcpt = NULL;
+ }
+ else
+ {
+ rcpt = NULL;
+ }
+ }
if (!ve_subject(21, title, rcpt))
--
□ 本文章由 itoc 從 nctu5566.Dorm3.NCTU.edu.tw 發表