mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-06 17:51:36 +02:00
ListPage now loads all files from a directory, sorts them, parses bbcode in them and displays them as messages.
This commit is contained in:
parent
6a01c57c36
commit
fe162b60af
@ -1,28 +1,88 @@
|
|||||||
#include "list_page.h"
|
#include "list_page.h"
|
||||||
|
|
||||||
#include "core/query_builder.h"
|
#include "core/query_builder.h"
|
||||||
#include "core/table_builder.h"
|
|
||||||
#include "core/query_result.h"
|
#include "core/query_result.h"
|
||||||
|
#include "core/table_builder.h"
|
||||||
|
#include "core/utils.h"
|
||||||
|
|
||||||
|
#include <tinydir/tinydir.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
void ListPage::index(Request *request) {
|
void ListPage::index(Request *request) {
|
||||||
std::string r = "";
|
std::string r = "";
|
||||||
|
|
||||||
for (uint32_t i = 0; i < messages.size(); ++i) {
|
for (uint32_t i = 0; i < list_entries.size(); ++i) {
|
||||||
r += "<p>" + messages[i] + "</p><br>";
|
r += "<div class=\"list_entry\">" + list_entries[i] + "</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
r += "";
|
request->body += r;
|
||||||
|
|
||||||
request->body += r;
|
request->compile_and_send_body();
|
||||||
|
}
|
||||||
|
|
||||||
request->compile_and_send_body();
|
void ListPage::load() {
|
||||||
|
if (folder == "") {
|
||||||
|
printf("Error: ListPage::load called, but a folder is not set!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> files;
|
||||||
|
|
||||||
|
tinydir_dir dir;
|
||||||
|
if (tinydir_open(&dir, folder.c_str()) == -1) {
|
||||||
|
printf("Error opening ListPage::folder!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (dir.has_next) {
|
||||||
|
tinydir_file file;
|
||||||
|
if (tinydir_readfile(&dir, &file) == -1) {
|
||||||
|
tinydir_next(&dir);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!file.is_dir) {
|
||||||
|
std::string np = file.path;
|
||||||
|
|
||||||
|
files.push_back(np);
|
||||||
|
}
|
||||||
|
|
||||||
|
tinydir_next(&dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
tinydir_close(&dir);
|
||||||
|
|
||||||
|
std::sort(files.begin(), files.end());
|
||||||
|
|
||||||
|
for (uint32_t i = 0; i < files.size(); ++i) {
|
||||||
|
FILE *f = fopen(files[i].c_str(), "r");
|
||||||
|
|
||||||
|
if (!f) {
|
||||||
|
printf("Settings::parse_file: Error opening file!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
fseek(f, 0, SEEK_END);
|
||||||
|
long fsize = ftell(f);
|
||||||
|
fseek(f, 0, SEEK_SET); /* same as rewind(f); */
|
||||||
|
|
||||||
|
std::string fd;
|
||||||
|
fd.resize(fsize);
|
||||||
|
|
||||||
|
fread(&fd[0], 1, fsize, f);
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
Utils::newline_to_br(&fd);
|
||||||
|
Utils::bbcode_evaluate_simple(&fd);
|
||||||
|
|
||||||
|
list_entries.push_back(fd);
|
||||||
|
|
||||||
|
//printf("ListPage: Loaded %s!\n", files[i].c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ListPage::ListPage() :
|
ListPage::ListPage() :
|
||||||
Object() {
|
Object() {
|
||||||
|
|
||||||
messages.push_back("T message 1");
|
|
||||||
messages.push_back("T message 2");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ListPage::~ListPage() {
|
ListPage::~ListPage() {
|
||||||
|
@ -15,10 +15,13 @@ class ListPage : public Object {
|
|||||||
public:
|
public:
|
||||||
void index(Request *request);
|
void index(Request *request);
|
||||||
|
|
||||||
|
void load();
|
||||||
|
|
||||||
ListPage();
|
ListPage();
|
||||||
~ListPage();
|
~ListPage();
|
||||||
|
|
||||||
std::vector<std::string> messages;
|
std::vector<std::string> list_entries;
|
||||||
|
std::string folder;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue
Block a user