作者itoc, 信區: itoc
標題[功能] manage.c 板主自行改變分類 (一)
時間04/01/02
作者: itoc (League) 看板: plan
標題: [功能] 板主自行改變分類
時間: 2004/01/02 Fri 22:40:21 Updated: 2005/05/26
板主可以自由地在站長限定的分類中跳來跳去
且改分類也會順便改 (A)nnounce→Class 裡面的位置
: manage.c 新增這一段於 post_manage() 前面
/* ----------------------------------------------------- */
/* 板主功能 : 修改分類 */
/* ----------------------------------------------------- */
static int
cmphdr(hdr)
HDR *hdr;
{
return !strcmp(hdr->xname, currboard);
}
static int
post_brdclass(xo)
XO *xo;
{
#define NUM_CLASS 3 /* 個人分類有三種 */ // 要幾個,自己改
int rc, i;
BRD *brd;
HDR gem;
char *path[NUM_CLASS] = // 分類自定,記得要在站上開相對應的分類
{
"gem/@/@Apple", "gem/@/@Banana", "gem/@/@Orange"
};
brd = bshm->bcache + currbno;
// 限制的規則自定
if (strcmp(brd->class, "個人"))
{
vmsg("只有個人板才能改變分類");
return XO_FOOT;
}
if (vans("是否修改看板分類(Y/N)?[N] ") == 'y')
{
// 分類名字自定
rc = vans("看板分類:(1)蘋果 (2)香蕉 (3)橘子?[Q] ") - '1';
if (rc < 0 || rc >= NUM_CLASS)
return XO_FOOT;
if (vans(msg_sure_ny) == 'y')
{
/* 刪除舊的分類 */
for (i = 0; i < NUM_CLASS; i++)
{
/* 已找到舊分類,就不需要繼續找其他分類 */
if (!rec_del(path[i], sizeof(HDR), 0, cmphdr))
break;
}
/* 加入新的分類並排序 */
brd2gem(brd, &gem);
rec_add(path[rc], &gem, sizeof(HDR));
rec_sync(path[rc], sizeof(HDR), cmphdr, NULL);
vmsg("看板分類已修改成功\,一小時後將於分類群組中更新");
}
}
return XO_FOOT;
}
: manage.c:post_manage()
"Manager 增減副板主",
+ "Class 改變分類",
...
- char *menu = "◎ 板主選單 (B)主題 (W)進板 (M)副板"
+ char *menu = "◎ 板主選單 (B)主題 (W)進板 (M)副板 (C)分類"
...
case 'm':
return post_changeBM(xo);
+ case 'c':
+ return post_brdclass(xo);
--
□ 本文章由 itoc 從 itoc.Dorm11.NCTU.edu.tw 發表