From 63573eaa9ce3ad757f402e91e0844305e6f4265e Mon Sep 17 00:00:00 2001
From: piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Sun, 24 Jul 2005 03:19:33 +0000
Subject: integrated board attr setup

git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2948 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 mbbsd/bbs.c           | 120 +++++++++++++++++++++++++++-----------------------
 sample/etc/board.help |   2 +-
 2 files changed, 66 insertions(+), 56 deletions(-)

diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index 121216d9..aafd8df2 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -2558,77 +2558,87 @@ b_changerecommend(int ent, const fileheader_t * fhdr, const char *direct)
     char *optCmds[2] = {
 	"/b", "/x"
     };
-    char *optDesc[2] = {
-	"/�N��",
-	"/����۰ʰO��"
-    };
     boardheader_t   *bp=NULL;
-    int touched = 0;
+    int touched = 0, finished = 0;
     if (!((currmode & MODE_BOARD) || HasUserPerm(PERM_SYSOP)))
 	return DONOTHING;
     bp = getbcache(currbid); 
-    move(b_lines - 6, 0); clrtobot();
-    outs(MSG_SEPERATOR);
-    outs("\n�ثe�ݪO�]�w:\n");
-    prints(" - %s ���ˤ峹\n", 
-	    (bp->brdattr & BRD_NORECOMMEND) ? "���i":"�i�H");
+
+    while(!finished) {
+	move(b_lines - 6, 0); clrtobot();
+	outs(MSG_SEPERATOR);
+	outs("\n�ثe�ݪO�]�w:\n");
+	prints( " " ANSI_COLOR(1;36) "h" ANSI_RESET 
+		" - ���}���A(�O�_����): %s " ANSI_RESET "\n", 
+		(bp->brdattr & BRD_HIDE) ? 
+		ANSI_COLOR(1)"����":"���}");
+	prints( " " ANSI_COLOR(1;36) "r" ANSI_RESET 
+		" - %s " ANSI_RESET "���ˤ峹\n", 
+		(bp->brdattr & BRD_NORECOMMEND) ? 
+		ANSI_COLOR(1)"���i":"�i�H");
 #ifndef OLDRECOMMEND
-    prints(" - %s �N��\n", 
-	    ((bp->brdattr & BRD_NORECOMMEND) || (bp->brdattr & BRD_NOBOO))
-	    ? "���i":"�i�H");
+	prints( " " ANSI_COLOR(1;36) "b" ANSI_RESET
+	        " - %s " ANSI_RESET "�N��\n", 
+		((bp->brdattr & BRD_NORECOMMEND) || (bp->brdattr & BRD_NOBOO))
+		? ANSI_COLOR(1)"���i":"�i�H");
 #else
-    optCmds[0] = ""; optDesc[0] = "";
+	optCmds[0] = "";
 #endif
 #ifdef AUTO_CP_LOG
-    prints(" - ����峹�� %s �۰ʰO��\n", 
-	    (bp->brdattr & BRD_NOCPLOG) ? "���|":"�|");
+	prints( " " ANSI_COLOR(1;36) "x" ANSI_RESET 
+		" - ����峹�� %s " ANSI_RESET "�۰ʰO��\n", 
+		(bp->brdattr & BRD_NOCPLOG) ? 
+		"���|" : ANSI_COLOR(1)"�|");
 #else
-    optCmds[1] = ""; optDesc[1] = "";
+	optCmds[1] = ""; optDesc[1] = "";
 #endif
 
-    switch(tolower(getans("�� r%s%s �]�w�i�_ ����%s%s: ",
-		    optCmds[0], optCmds[1],
-		    optDesc[0], optDesc[1])))
-    {
+	switch(tolower(getans("�Ы� h/r%s%s ���ܳ]�w,�䥦�䵲��: ",
+			optCmds[0], optCmds[1])))
+	{
 #ifdef AUTO_CP_LOG
-	case 'x':
-	    bp->brdattr ^= BRD_NOCPLOG;
-	    touched = 1;
-	    vmsg("�w�]�w���ۥ��O����峹�N %s �۰ʯd�U�O��",
-		    (bp->brdattr & BRD_NOCPLOG) ? "���|" : "�|"
-		);
-	    break;
+	    case 'x':
+		bp->brdattr ^= BRD_NOCPLOG;
+		touched = 1;
+		break;
 #endif
-	case 'r':
-	    bp->brdattr ^= BRD_NORECOMMEND;
-	    touched = 1;
-#ifdef OLDRECOMMEND
-	    vmsg("���O�{�b %s ����",
-		    (bp->brdattr & BRD_NORECOMMEND) ? "�T��" : "�}��");
-	    break;
-#else
-	    vmsg("���O�{�b %s ����, %s �N�n",
-		    (bp->brdattr & BRD_NORECOMMEND) ? "�T��" : "�}��",
-		    ((bp->brdattr & BRD_NORECOMMEND)||(bp->brdattr & BRD_NOBOO)) ? "�T��" : "�}��");
-	    break;
-	case 'b':
-	    if(bp->brdattr & BRD_NORECOMMEND)
-		bp->brdattr |= BRD_NOBOO;
-	    bp->brdattr ^= BRD_NOBOO;
-	    touched = 1;
-	    if (!(bp->brdattr & BRD_NOBOO))
-		bp->brdattr &= ~BRD_NORECOMMEND;
-	    vmsg("���O�{�b %s ����, %s �N�n",
-		    (bp->brdattr & BRD_NORECOMMEND) ? "�T��" : "�}��",
-		    ((bp->brdattr & BRD_NORECOMMEND)||(bp->brdattr & BRD_NOBOO)) ? "�T��" : "�}��");
-	    break;
+	    case 'h':
+		if(bp->brdattr & BRD_HIDE)
+		{
+		    bp->brdattr &= ~BRD_HIDE;
+		    bp->brdattr &= ~BRD_POSTMASK;
+		} else {
+		    bp->brdattr |= BRD_HIDE;
+		    bp->brdattr |= BRD_POSTMASK;
+		}
+		touched = 1;
+		break;
+	    case 'r':
+		bp->brdattr ^= BRD_NORECOMMEND;
+		touched = 1;
+		break;
+#ifndef OLDRECOMMEND
+	    case 'b':
+		if(bp->brdattr & BRD_NORECOMMEND)
+		    bp->brdattr |= BRD_NOBOO;
+		bp->brdattr ^= BRD_NOBOO;
+		touched = 1;
+		if (!(bp->brdattr & BRD_NOBOO))
+		    bp->brdattr &= ~BRD_NORECOMMEND;
+		break;
 #endif
-	default:
-	    vmsg("�����ܥ���]�w");
-	    break;
+	    default:
+		finished = 1;
+		break;
+	}
     }
     if(touched)
-    substitute_record(fn_board, bp, sizeof(boardheader_t), currbid);
+    {
+	substitute_record(fn_board, bp, sizeof(boardheader_t), currbid);
+	vmsg("�w�x�s�s�]�w");
+    }
+    else
+	vmsg("�����ܥ���]�w");
 
     return FULLUPDATE;
 }
diff --git a/sample/etc/board.help b/sample/etc/board.help
index 4a57472f..ec282243 100644
--- a/sample/etc/board.help
+++ b/sample/etc/board.help
@@ -19,4 +19,4 @@
 	   (T/B) ���s�峹���D/���s�ݪO���D   (t/^D) �аO�峹/�尣�аO���峹
          (O)/(i) �o���`�N�ƶ�/�峹���O  (W)/(K)/(v) �s�i�O�e��/����/�i���W��
             (^G) �|���L/����U�`/�}��         (H) �����ݪO����
-	     (I) �]�w�i�_���ˤ峹/����峹�۰ʰO��
+	     (I) �ݪO�]�w(����,����,����O��)
-- 
cgit v1.2.3