From 995a980d49cb1dbd66d93a88f6f47787430aedd1 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sat, 20 Aug 2022 12:41:17 +0200 Subject: [PATCH] HandlerPageEdit: Add 'frompage' GET parameter to use a page as a template --- handlers/handlerpageedit.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/handlers/handlerpageedit.cpp b/handlers/handlerpageedit.cpp index aeb95af..e686d12 100644 --- a/handlers/handlerpageedit.cpp +++ b/handlers/handlerpageedit.cpp @@ -42,7 +42,7 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename, return errorResponse("No permission", "You don't have permission to create new pages"); } auto revisiondao = this->database->createRevisionDao(); - auto revision = this->database->createRevisionDao()->getCurrentForPage(pagename); + auto revision = revisiondao->getCurrentForPage(pagename); std::string body; unsigned int current_revision = 0; @@ -51,6 +51,15 @@ Response HandlerPageEdit::handleRequest(PageDao &pageDao, std::string pagename, body = revision->content; current_revision = revision->revision; } + std::string from = r.get("frompage"); + if(!from.empty()) + { + if(!effectivePermissions(from).canRead()) + { + return this->errorResponse("Permission denied", "No access permissions, so you can't use this page as a template"); + } + body = revisiondao->getCurrentForPage(from)->content; + } if(r.getRequestMethod() == "POST") { if(r.post("do") == "submit")