/[LeafOK_CVS]/lbbs/src/section_list_display.c
ViewVC logotype

Diff of /lbbs/src/section_list_display.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.25 by sysadm, Sat Jun 14 13:33:48 2025 UTC Revision 1.26 by sysadm, Sun Jun 15 04:45:13 2025 UTC
# Line 18  Line 18 
18  #include "section_list_loader.h"  #include "section_list_loader.h"
19  #include "article_cache.h"  #include "article_cache.h"
20  #include "article_post.h"  #include "article_post.h"
21    #include "article_del.h"
22  #include "common.h"  #include "common.h"
23  #include "io.h"  #include "io.h"
24  #include "screen.h"  #include "screen.h"
# Line 42  enum select_cmd_t Line 43  enum select_cmd_t
43          CHANGE_NAME_DISPLAY = 4,          CHANGE_NAME_DISPLAY = 4,
44          POST_ARTICLE = 5,          POST_ARTICLE = 5,
45          EDIT_ARTICLE = 6,          EDIT_ARTICLE = 6,
46            DELETE_ARTICLE = 7,
47  };  };
48    
49  static int section_list_draw_items(int page_id, ARTICLE *p_articles[], int article_count, int display_nickname)  static int section_list_draw_items(int page_id, ARTICLE *p_articles[], int article_count, int display_nickname)
# Line 141  static int section_list_draw_screen(cons Line 143  static int section_list_draw_screen(cons
143          moveto(2, 0);          moveto(2, 0);
144          prints("返回[\033[1;32m←\033[0;37m,\033[1;32mESC\033[0;37m] 选择[\033[1;32m↑\033[0;37m,\033[1;32m↓\033[0;37m] "          prints("返回[\033[1;32m←\033[0;37m,\033[1;32mESC\033[0;37m] 选择[\033[1;32m↑\033[0;37m,\033[1;32m↓\033[0;37m] "
145                     "阅读[\033[1;32m→\033[0;37m,\033[1;32mENTER\033[0;37m] 发表[\033[1;32mCtrl-P\033[0;37m] "                     "阅读[\033[1;32m→\033[0;37m,\033[1;32mENTER\033[0;37m] 发表[\033[1;32mCtrl-P\033[0;37m] "
146                     "修改[\033[1;32mE\033[0;37m] %s[\033[1;32mn\033[0;37m]\033[m",                     "修改[\033[1;32mE\033[0;37m] 删除[\033[1;32md\033[0;37m] %s[\033[1;32mn\033[0;37m]\033[m",
147                     (display_nickname ? "显示用户名" : "显示昵称"));                     (display_nickname ? "显示用户名" : "显示昵称"));
148          moveto(3, 0);          moveto(3, 0);
149          if (display_nickname)          if (display_nickname)
# Line 201  static enum select_cmd_t section_list_se Line 203  static enum select_cmd_t section_list_se
203                          return POST_ARTICLE;                          return POST_ARTICLE;
204                  case 'E':                  case 'E':
205                          return EDIT_ARTICLE;                          return EDIT_ARTICLE;
206                    case 'd':
207                            return DELETE_ARTICLE;
208                  case KEY_HOME:                  case KEY_HOME:
209                          *p_page_id = 0;                          *p_page_id = 0;
210                  case KEY_PGUP:                  case KEY_PGUP:
# Line 580  int section_list_display(const char *sna Line 584  int section_list_display(const char *sna
584                          ret = article_post(p_section, &article_new);                          ret = article_post(p_section, &article_new);
585                          if (ret < 0)                          if (ret < 0)
586                          {                          {
587                                  log_error("article_post(sid=%d, NEW) error\n", p_section->sid);                                  log_error("article_post(sid=%d) error\n", p_section->sid);
588                          }                          }
589                          else if (ret > 0) // New article posted                          else if (ret > 0) // New article posted
590                          {                          {
# Line 598  int section_list_display(const char *sna Line 602  int section_list_display(const char *sna
602                          }                          }
603                          break;                          break;
604                  case EDIT_ARTICLE:                  case EDIT_ARTICLE:
605                          if (p_articles[selected_index]->uid != BBS_priv.uid)                          if (!checkpriv(&BBS_priv, p_section->sid, S_POST) ||
606                                    p_articles[selected_index]->uid != BBS_priv.uid)
607                          {                          {
608                                  break;                                  break; // No permission
609                          }                          }
610                          if (article_modify(p_section, p_articles[selected_index], &article_new) < 0)                          if (article_modify(p_section, p_articles[selected_index], &article_new) < 0)
611                          {                          {
612                                  log_error("article_post(aid=%d, EDIT) error\n", p_articles[selected_index]->aid);                                  log_error("article_modify(aid=%d) error\n", p_articles[selected_index]->aid);
613                            }
614                            if (section_list_draw_screen(sname, stitle, master_list, display_nickname) < 0)
615                            {
616                                    log_error("section_list_draw_screen() error\n");
617                                    return -2;
618                            }
619                            break;
620                    case DELETE_ARTICLE:
621                            if (!checkpriv(&BBS_priv, p_section->sid, S_POST) ||
622                                    (!checkpriv(&BBS_priv, p_section->sid, S_MAN_S) && p_articles[selected_index]->uid != BBS_priv.uid))
623                            {
624                                    break; // No permission
625                            }
626                            if (article_del(p_section, p_articles[selected_index]) < 0)
627                            {
628                                    log_error("article_del(aid=%d) error\n", p_articles[selected_index]->aid);
629                          }                          }
630                          if (section_list_draw_screen(sname, stitle, master_list, display_nickname) < 0)                          if (section_list_draw_screen(sname, stitle, master_list, display_nickname) < 0)
631                          {                          {


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1