| 48 |
LAST_TOPIC_ARTICLE = 9, |
LAST_TOPIC_ARTICLE = 9, |
| 49 |
}; |
}; |
| 50 |
|
|
| 51 |
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, int ontop_start_offset) |
| 52 |
{ |
{ |
| 53 |
char str_time[LINE_BUFFER_LEN]; |
char str_time[LINE_BUFFER_LEN]; |
| 54 |
struct tm tm_sub; |
struct tm tm_sub; |
| 115 |
} |
} |
| 116 |
|
|
| 117 |
moveto(4 + i, 1); |
moveto(4 + i, 1); |
| 118 |
prints(" %s%7d\033[m %c %s%*s %s %s%s\033[m", |
if (i >= ontop_start_offset) |
| 119 |
(p_articles[i]->ontop |
{ |
| 120 |
? "\033[47;30m" |
prints(" \033[1;33m[ΜαΚΎ]\033[m %c %s%*s %s %s%s\033[m", |
| 121 |
: (p_articles[i]->aid == section_topic_view_tid |
article_flag, |
| 122 |
? "\033[1;33m" |
(display_nickname ? p_articles[i]->nickname : p_articles[i]->username), |
| 123 |
: (p_articles[i]->tid == section_topic_view_tid |
(display_nickname ? BBS_nickname_max_len - (int)strnlen(p_articles[i]->nickname, sizeof(p_articles[i]->nickname)) |
| 124 |
? "\033[1;36m" |
: BBS_username_max_len - (int)strnlen(p_articles[i]->username, sizeof(p_articles[i]->username))), |
| 125 |
: ""))), |
"", |
| 126 |
p_articles[i]->aid, |
str_time, |
| 127 |
article_flag, |
(p_articles[i]->aid == section_topic_view_tid |
| 128 |
(display_nickname ? p_articles[i]->nickname : p_articles[i]->username), |
? "\033[1;33m" |
| 129 |
(display_nickname ? BBS_nickname_max_len - (int)strnlen(p_articles[i]->nickname, sizeof(p_articles[i]->nickname)) |
: (p_articles[i]->tid == section_topic_view_tid |
| 130 |
: BBS_username_max_len - (int)strnlen(p_articles[i]->username, sizeof(p_articles[i]->username))), |
? "\033[1;36m" |
| 131 |
"", |
: "")), |
| 132 |
str_time, |
title_f); |
| 133 |
(p_articles[i]->aid == section_topic_view_tid |
} |
| 134 |
? "\033[1;33m" |
else |
| 135 |
: (p_articles[i]->tid == section_topic_view_tid |
{ |
| 136 |
? "\033[1;36m" |
prints(" %s%7d\033[m %c %s%*s %s %s%s\033[m", |
| 137 |
: "")), |
(p_articles[i]->aid == section_topic_view_tid |
| 138 |
title_f); |
? "\033[1;33m" |
| 139 |
|
: (p_articles[i]->tid == section_topic_view_tid |
| 140 |
|
? "\033[1;36m" |
| 141 |
|
: "")), |
| 142 |
|
p_articles[i]->aid, |
| 143 |
|
article_flag, |
| 144 |
|
(display_nickname ? p_articles[i]->nickname : p_articles[i]->username), |
| 145 |
|
(display_nickname ? BBS_nickname_max_len - (int)strnlen(p_articles[i]->nickname, sizeof(p_articles[i]->nickname)) |
| 146 |
|
: BBS_username_max_len - (int)strnlen(p_articles[i]->username, sizeof(p_articles[i]->username))), |
| 147 |
|
"", |
| 148 |
|
str_time, |
| 149 |
|
(p_articles[i]->aid == section_topic_view_tid |
| 150 |
|
? "\033[1;33m" |
| 151 |
|
: (p_articles[i]->tid == section_topic_view_tid |
| 152 |
|
? "\033[1;36m" |
| 153 |
|
: "")), |
| 154 |
|
title_f); |
| 155 |
|
} |
| 156 |
} |
} |
| 157 |
|
|
| 158 |
return 0; |
return 0; |
| 429 |
ARTICLE *p_articles[BBS_article_limit_per_page]; |
ARTICLE *p_articles[BBS_article_limit_per_page]; |
| 430 |
int article_count; |
int article_count; |
| 431 |
int page_count; |
int page_count; |
| 432 |
|
int ontop_start_offset; |
| 433 |
int page_id = 0; |
int page_id = 0; |
| 434 |
int selected_index = 0; |
int selected_index = 0; |
| 435 |
ARTICLE_CACHE cache; |
ARTICLE_CACHE cache; |
| 469 |
return -2; |
return -2; |
| 470 |
} |
} |
| 471 |
|
|
| 472 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 473 |
if (ret < 0) |
if (ret < 0) |
| 474 |
{ |
{ |
| 475 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 483 |
|
|
| 484 |
while (!SYS_server_exit) |
while (!SYS_server_exit) |
| 485 |
{ |
{ |
| 486 |
ret = section_list_draw_items(page_id, p_articles, article_count, display_nickname); |
ret = section_list_draw_items(page_id, p_articles, article_count, display_nickname, ontop_start_offset); |
| 487 |
if (ret < 0) |
if (ret < 0) |
| 488 |
{ |
{ |
| 489 |
log_error("section_list_draw_items(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("section_list_draw_items(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 508 |
case EXIT_SECTION: |
case EXIT_SECTION: |
| 509 |
return 0; |
return 0; |
| 510 |
case CHANGE_PAGE: |
case CHANGE_PAGE: |
| 511 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 512 |
if (ret < 0) |
if (ret < 0) |
| 513 |
{ |
{ |
| 514 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 564 |
page_id--; |
page_id--; |
| 565 |
selected_index = BBS_article_limit_per_page - 1; |
selected_index = BBS_article_limit_per_page - 1; |
| 566 |
|
|
| 567 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 568 |
if (ret < 0) |
if (ret < 0) |
| 569 |
{ |
{ |
| 570 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 595 |
page_id++; |
page_id++; |
| 596 |
selected_index = 0; |
selected_index = 0; |
| 597 |
|
|
| 598 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 599 |
if (ret < 0) |
if (ret < 0) |
| 600 |
{ |
{ |
| 601 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 631 |
} |
} |
| 632 |
else if (ret > 0) // found |
else if (ret > 0) // found |
| 633 |
{ |
{ |
| 634 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 635 |
if (ret < 0) |
if (ret < 0) |
| 636 |
{ |
{ |
| 637 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 668 |
{ |
{ |
| 669 |
if (page_id != page_id_cur) // page changed |
if (page_id != page_id_cur) // page changed |
| 670 |
{ |
{ |
| 671 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 672 |
if (ret < 0) |
if (ret < 0) |
| 673 |
{ |
{ |
| 674 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 710 |
} |
} |
| 711 |
else if (ret > 0) // New article posted |
else if (ret > 0) // New article posted |
| 712 |
{ |
{ |
| 713 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 714 |
if (ret < 0) |
if (ret < 0) |
| 715 |
{ |
{ |
| 716 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 757 |
} |
} |
| 758 |
else if (ret > 0) // Article deleted |
else if (ret > 0) // Article deleted |
| 759 |
{ |
{ |
| 760 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 761 |
if (ret < 0) |
if (ret < 0) |
| 762 |
{ |
{ |
| 763 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
| 784 |
} |
} |
| 785 |
else if (ret > 0 && page_id != page_id_cur) // found and page changed |
else if (ret > 0 && page_id != page_id_cur) // found and page changed |
| 786 |
{ |
{ |
| 787 |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count); |
ret = query_section_articles(p_section, page_id, p_articles, &article_count, &page_count, &ontop_start_offset); |
| 788 |
if (ret < 0) |
if (ret < 0) |
| 789 |
{ |
{ |
| 790 |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |
log_error("query_section_articles(sid=%d, page_id=%d) error\n", p_section->sid, page_id); |