回精華區
作者itoc.bbs@cpu.tfcis.org (核心動力) 看板: plan
標題Re: [請教]有關不能發文
時間動力核心 (2005/05/26 Thu 02:06:24) Updated: 2005/05/26
※ 引述《hatvito.bbs@cpu.tfcis.org (123)》之銘言:
> 如果說
> 想要讓板主自訂能不能發文
> 譬如說
> 有大批鄉民鬧板
> 板主來不及處理
> 想要先停止發文來整理板面

: battr.h

#define BRD_ANONYMOUS   0x20    /* 匿名看板 */
+ #define BRD_NOPOST    0x40    /* 不能發表文章到看板 */

  ...
  ...

- #define NUMBATTRS       6
+ #define NUMBATTRS       7

- #define STR_BATTR       "zTcsvA"
+ #define STR_BATTR       "zTcsvAp"

: battr.h:battr_tbl[]

  "匿名看板",           /* BRD_ANONYMOUS */
+ "不能發表文章到看板", /* BRD_NOPOST */

: post.c:do_post()

+ if (currbattr & BRD_NOPOST)
+   return XO_NONE;

  if (!(bbstate & STAT_POST))

> ──────────────────────────────────── <

  如果希望開放給板主自行設定

: manage.c 把以下這段加在 post_battr_noscore() 後面

static int
post_battr_nopost(xo)
  XO *xo;
{
  BRD *oldbrd, newbrd;

  oldbrd = bshm->bcache + currbno;
  memcpy(&newbrd, oldbrd, sizeof(BRD));

  switch (vans("1)可以刪除文章 2)不可刪除文章 [Q] "))
  {
  case '1':
    newbrd.battr &= ~BRD_NOPOST;
    break;
  case '2':
    newbrd.battr |= BRD_NOPOST;
    break;
  default:
    return XO_FOOT;
  }

  if (memcmp(&newbrd, oldbrd, sizeof(BRD)) && vans(msg_sure_ny) == 'y')
  {
    memcpy(oldbrd, &newbrd, sizeof(BRD));
    rec_put(FN_BRD, &newbrd, sizeof(BRD), currbno, NULL);
  }

  return XO_FOOT;
}

: manage.c:post_manage()

#  ifdef HAVE_SCORE
    "Score   設定可否評分",
#  endif
+   "Post    發表文章設定",

  ...
  ...

#  ifdef HAVE_SCORE
    " (S)評分"
#  endif
+   " (P)發文"

  ...
  ...

#ifdef HAVE_SCORE
  case 's':
    return post_battr_noscore(xo);
#endif

+ case 'p':
+   return post_battr_nopost(xo);

--
  Origin:  Maple-itoc˙動力核心  cpu.tfcis.org 
  Author: itoc itoc.Dorm11.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻