diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/journal_commit.cc | 14 | ||||
-rw-r--r-- | server/src/journal_commit.h | 3 | ||||
-rw-r--r-- | server/src/server.cc | 12 |
3 files changed, 16 insertions, 13 deletions
diff --git a/server/src/journal_commit.cc b/server/src/journal_commit.cc index e0db705..414fa20 100644 --- a/server/src/journal_commit.cc +++ b/server/src/journal_commit.cc @@ -207,12 +207,8 @@ JournalWriter::JournalWriter(std::string host, unsigned short int port) } void JournalWriter::addEntry(Transaction &transaction, Commit &commit, - std::string resume, std::string templname) + std::string resume, Template *templ) { - TemplateParser tp(templname); - tp.parse(); - Template *templ = tp.getTemplate(); - size_t index = 0; std::vector< Macro >::iterator i = templ->macros.begin(); while(i != templ->macros.end()) { @@ -224,21 +220,21 @@ void JournalWriter::addEntry(Transaction &transaction, Commit &commit, if(index >= templ->macros.size()) { PRACRO_ERR(journal, "Could not find macro %s in template %s\n", - commit.macro.c_str(), templname.c_str()); + commit.macro.c_str(), templ->attributes["name"].c_str()); // return; } else { PRACRO_DEBUG(journal, "Found macro %s as index %u in template %s\n", - commit.macro.c_str(), index, templname.c_str()); + commit.macro.c_str(), index, templ->attributes["name"].c_str()); } // First run - initialize username and cpr. if(currentuser == "" && entrylist.size() == 0) currentuser = transaction.user; if(currentcpr == "" && entrylist.size() == 0) currentcpr = transaction.cpr; - PRACRO_DEBUG(journal, "addEntry: template(%s)\n", templname.c_str()); + PRACRO_DEBUG(journal, "addEntry: template(%s)\n", templ->attributes["name"].c_str()); // Add the template resume as the header (ie. first entry) of the journal entry. - if(entrylist.size() == 0 && templname != "") { + if(entrylist.size() == 0 && templ->attributes["name"] != "") { std::string template_resume = templ->attributes["resume"]; PRACRO_DEBUG(journal, "TemplateResume: %s\n", template_resume.c_str()); diff --git a/server/src/journal_commit.h b/server/src/journal_commit.h index 82919ed..4f7f211 100644 --- a/server/src/journal_commit.h +++ b/server/src/journal_commit.h @@ -31,13 +31,14 @@ #include <map> #include "transaction.h" +#include "template.h" class JournalWriter { public: JournalWriter(std::string host, unsigned short int port); void addEntry(Transaction &transaction, Commit &commit, - std::string resume, std::string template_resume); + std::string resume, Template *templ); void commit(); diff --git a/server/src/server.cc b/server/src/server.cc index 0eeec43..d0e9524 100644 --- a/server/src/server.cc +++ b/server/src/server.cc @@ -82,7 +82,8 @@ public: static std::string handleCommits(Transaction *transaction, Database &db, - JournalWriter &journalwriter, MacroList ¯olist) + JournalWriter &journalwriter, MacroList ¯olist, + TemplateList &templatelist) { std::string answer; @@ -99,7 +100,12 @@ static std::string handleCommits(Transaction *transaction, Database &db, db.commitTransaction(transaction->user, transaction->cpr, *macro, commit.fields); if(resume != "") { - journalwriter.addEntry(*transaction, commit, resume, commit.templ); + + TemplateParser tp(templatelist.getLatestVersion(commit.templ)); + tp.parse(); + Template *templ = tp.getTemplate(); + + journalwriter.addEntry(*transaction, commit, resume, templ); } i++; @@ -264,7 +270,7 @@ static std::string handleTransaction(Transaction *transaction, answer += "<pracro version=\"1.0\">\n"; try { - answer += handleCommits(transaction, db, journalwriter, macrolist); + answer += handleCommits(transaction, db, journalwriter, macrolist, templatelist); } catch( std::exception &e ) { PRACRO_ERR(server, "Commit error: %s\n", e.what()); return error_box(xml_encode(e.what())); |