+ usage of template file for displaying the results

This commit is contained in:
kelson42 2011-04-08 13:57:23 +00:00
parent 2bd500bf18
commit 76f2603810

View File

@ -20,6 +20,9 @@
#include <sys/types.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <unistd.h>
#include <libgen.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
@ -29,6 +32,7 @@
#include <microhttpd.h>
#include <iostream>
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <zim/zim.h>
@ -233,18 +237,14 @@ static int accessHandlerCallback(void *cls,
try {
std::string patternString = string(pattern);
searcher->search(patternString, 30, verboseFlag);
content = "<html><head><title>Kiwix search results</title></head><body><h1>Results</h1><hr/><ol>\n";
while (searcher->getNextResult(urlStr, titleStr, scoreInt)) {
sprintf(scoreStr, "%d", scoreInt);
content += "<li><a href=\"" + urlStr.substr(0, 2) + urlEncode(urlStr.substr(2)) + "\">" + titleStr+ "</a> - " + scoreStr + "%</li>\n";
}
searcher->search(patternString, 0, 25, verboseFlag);
content = "<html><head><title>Kiwix search results</title></head><body>\n";
content += searcher->getHtml();
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
content += "</ol></body></html>\n";
content += "</body></html>\n";
mimeType = "text/html; charset=utf-8";
@ -395,6 +395,10 @@ int main(int argc, char **argv) {
void *page;
/* Chnage the current dir to binary dir */
const char* currentDirectory = dirname(argv[0]);
chdir(currentDirectory);
/* Instanciate the ZIM file handler */
try {
reader = new kiwix::Reader(zimPath);
@ -414,6 +418,30 @@ int main(int argc, char **argv) {
cerr << "Unable to open the search index '" << zimPath << "' with the XapianSearcher." << endl;
}
/* Try to load the result template */
try {
fstream templateStream;
char rootPath[PATH_MAX];
templateStream.open("../share/kiwix/static/results.tmpl", ifstream::in);
if (templateStream.fail()) {
templateStream.open("../../static/results.tmpl", ifstream::in);
if (templateStream.fail()) {
throw "Unable to find a result template file.";
} else {
realpath("../../static/results.tmpl", rootPath);
searcher->setResultTemplatePath(rootPath);
}
} else {
realpath("../share/kiwix/static/results.tmpl", rootPath);
searcher->setResultTemplatePath(rootPath);
}
} catch (...) {
cerr << "Unable to open the result template file." << endl;
exit(1);
}
/* Try with the CluceneSearcher */
if (!hasSearchIndex) {
try {