作者itoc, 信區: itoc
標題[功能] board.c 分類小組長
時間04/04/05
作者: itoc (網路上的芳鄰) 看板: plan
標題: [功能] 分類小組長
時間: 2004/04/05 Mon 11:07:00 Updated: 2005/05/19
※ 引述《Efen.bbs@backwind.g1.dorm.ncku.edu.tw (every day...)》之銘言:
> ptt2的小組長功能有沒有辦法弄呢
> 假設你是某一分類的小組長,
> 小組長就可以自行開版,
> 並且把版放入自己分類下面的子分類…
> 並且能設定版的權限,版主…等
> 嗯,就是只要在該分類下,
> 他就等於是一個看版總管,
> 出了該分類,他就是個一般使用者了!
: ─────────────────────────────────────
這是如何設定小組長的說明
在 (A)nnouce 裡面的 Class 加上他的 ID,他就變成小組長了
例如原本標題是
Personal/ 分類 □ 個人小天堂
改成
Personal/ 個人 □ 個人小天堂 itoc/sysop
那麼 itoc 和 sysop 就變成 Personal/ 的小組長了
而「個人」就是本子目錄下,小組長所能開設的看板分類名稱
是一串空白,空白個數不限,至少要一個
小組長沒有子目錄繼承
例如有樹狀結構
Personal/ 個人 □ 個人小天堂 itoc
├ PersonalA/ 個人 □ 個人小天堂 (A)
└ PersonalB/ 個人 □ 個人小天堂 (B)
那麼 itoc 是 Personal/ 的小組長
但是不是 PersonalA/ PersonalB/ 的小組長
所以如果希望 itoc 也是 PersonalA/ PersonalB/ 的小組長,則必須
Personal/ 個人 □ 個人小天堂 itoc
├ PersonalA/ 個人 □ 個人小天堂 (A) itoc
└ PersonalB/ 個人 □ 個人小天堂 (B) itoc
小組長在其管理的分類群組中可以按 ^P 新增看板,按 E 修改看板
小組長只能在該子目錄開新看板,不能開新目錄
若要開新目錄,要站長從 (A)nnounce 裡面開
小組長也看不到隱藏板,即使是自己所管理的分類群組下
如果小組長改了板名,那麼得由站長去 (A)nnounce->Class 裡面改
: ─────────────────────────────────────
: board.c:class_newbrd()
- if (!HAS_PERM(PERM_ALLBOARD))
+ if (!is_class_manager(xo))
return XO_NONE;
: board.c:class_edit()
static int
class_edit(xo)
XO *xo;
{
+ int manager;
+ manager = is_class_manager(xo);
+ if (manager || HAS_PERM(PERM_BM))
- if (HAS_PERM(PERM_ALLBOARD | PERM_BM))
{
...
...
- if (!HAS_PERM(PERM_ALLBOARD))
+ if (!manager)
brd_title(chn); /* itoc.000312: 板主修改中文敘述 */
else
brd_edit(chn);
: board.c:is_class_manager() 新增此函式在 class_edit() 前面
static int /* 1:是此分類群組的小組長 */
is_class_manager(xo)
XO *xo;
{
if (HAS_PERM(PERM_ALLBOARD))
return 1;
/* 只有看板總管可以在看板列表及分類群組第一層開新板 */
if (xo->key < CH_END) /* 在分類群組第二層以下 */
{
short *chx;
char *img, *str, *list;
img = class_img;
chx = (short *) img + (CH_END - xo->key);
str = img + *chx;
/* 檢查是不是此分類群組的小組長 */
if (list = strrchr(str + BNLEN + 1 + BCLEN + 1, ' '))
{
list++;
if (is_bm(list, cuser.userid))
return 1;
}
}
return 0;
}
--
□ 本文章由 itoc 從 itoc.Dorm11.NCTU.edu.tw 發表