HandlerPageEdit: Support for renaming and visibility settings
This commit is contained in:
orang tua
beafde74d0
melakukan
f3bb881b63
@ -44,9 +44,11 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename,
|
||||
auto revision = this->database->createRevisionDao()->getCurrentForPage(pagename);
|
||||
std::string body;
|
||||
|
||||
unsigned int current_revision = 0;
|
||||
if(revision)
|
||||
{
|
||||
body = revision->content;
|
||||
current_revision = revision->revision;
|
||||
}
|
||||
if(r.getRequestMethod() == "POST")
|
||||
{
|
||||
@ -55,12 +57,6 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename,
|
||||
std::string newContent = r.post("content");
|
||||
std::string newComment = r.post("comment");
|
||||
|
||||
Revision newRevision;
|
||||
newRevision.author = this->userSession->user.login;
|
||||
newRevision.comment = newComment;
|
||||
newRevision.page = pagename;
|
||||
newRevision.content = newContent;
|
||||
|
||||
// TODO: must check, whether categories differ, and perhaps don't allow every user
|
||||
// to set categories
|
||||
Parser parser;
|
||||
@ -68,14 +64,33 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename,
|
||||
try
|
||||
{
|
||||
this->database->beginTransaction();
|
||||
if(!pageexists)
|
||||
std::string visiblecmd = parser.extractCommand("visible", newContent);
|
||||
std::string rename = parser.extractCommand("rename", newContent);
|
||||
Page page;
|
||||
std::optional<Page> currentPage = pageDao.find(pagename);
|
||||
if(currentPage)
|
||||
{
|
||||
Page newPage;
|
||||
newPage.current_revision = 0;
|
||||
newPage.listed = true;
|
||||
newPage.name = pagename;
|
||||
pageDao.save(newPage);
|
||||
page = *currentPage;
|
||||
}
|
||||
if(rename != "")
|
||||
{
|
||||
if(newComment == "")
|
||||
{
|
||||
newComment = "(renamed) from " + pagename + " to " + rename;
|
||||
}
|
||||
pagename = rename;
|
||||
}
|
||||
page.current_revision = current_revision;
|
||||
page.listed = !(visiblecmd == "0");
|
||||
page.name = pagename;
|
||||
pageDao.save(page);
|
||||
|
||||
Revision newRevision;
|
||||
newRevision.author = this->userSession->user.login;
|
||||
newRevision.comment = newComment;
|
||||
newRevision.page = pagename;
|
||||
newRevision.content = newContent;
|
||||
|
||||
revisiondao->save(newRevision);
|
||||
pageDao.setCategories(pagename, cats);
|
||||
this->database->commitTransaction();
|
||||
|
Memuat…
Reference in New Issue
Block a user