回精華區
作者itoc, 信區: itoc
標題[功能] board.c 進分類畫面
時間04/08/16
作者: itoc (奇怪的暱稱) 看板: plan
標題: [功能] 進分類畫面
時間: 2004/08/16 Mon 11:27:14                           Updated: 2004/08/16

※ 引述《chwaian.bbs@processor.tfcis.org (無言)》之銘言:
> 進入分類時自動show出類似進板畫面的功能

  開一個目錄叫 gem/brdnote

  進入該分類後,站長按 B 即可編輯該分類的「進分類畫面」

: board.c:XoClass()

  xo.key = chn;
  xo.xyz = NULL;
  if (!class_load(&xo))
  {
    if (xo.xyz)
      free(xo.xyz);
    return 0;
  }

+ /* 進分類畫面 */
+ if (!(class_bits[-chn] & BRD_V_BIT) || (cuser.ufo & UFO_BRDNOTE))
+ {
+   short *chx;
+   char *img, *str, *ptr, fpath[64];

+   img = class_img;
+   chx = (short *) img + (CH_END - chn);
+   str = img + *chx;

+   if (ptr = strchr(str, '/'))
+   {
+     sprintf(fpath, "gem/brdnote/%.*s.note", ptr - str, str);
+     more(fpath, NULL);
+   }
+   class_bits[-chn] ^= BRD_V_BIT;
+ }

  xt = xz[XZ_CLASS - XO_ZONE].xo;
  xz[XZ_CLASS - XO_ZONE].xo = &xo;

: board.c:class_memo_edit() 加在 class_help() 前面

static int
class_memo_edit(xo)
  XO *xo;
{
  int mode;
  short *chx;
  char *img, *str, *ptr, fpath[64];

  if (xo->key >= CH_END || !HAS_PERM(PERM_ALLBOARD))
    return XO_NONE;

  img = class_img;
  chx = (short *) img + (CH_END - xo->key);
  str = img + *chx;

  if (!(ptr = strchr(str, '/')))
    return XO_NONE;

  mode = vans("進板畫面 (D)刪除 (E)修改 (Q)取消?[E] ");

  if (mode != 'q')
  {
    sprintf(fpath, "gem/brdnote/%.*s.note", ptr - str, str);

    if (mode == 'd')
    {
      unlink(fpath);
      return XO_FOOT;
    }

    if (vedit(fpath, 0))       /* Thor.981020: 注意被talk的問題 */
      vmsg(msg_cancel);
    return class_head(xo);
  }
  return XO_FOOT;
}

: board.c:class_cb[]

+ 'B', class_memo_edit,

  'h', class_help

--
□ 本文章由 itocpc512-2.EE.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻