Loading plugins/staticpage/settings.cppdeleted 100644 → 0 +0 −1 Changes for plugins/staticpage/settings.cpp: 0 added lines, 1 removed line. Original line number Diff line number Diff line plugins/staticpage/static.cpp +134 −3 Changes for plugins/staticpage/static.cpp: 134 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -43,14 +43,145 @@ blogi::StaticPage::~StaticPage(){ void blogi::StaticPage::initPlugin(){ } bool blogi::StaticPage::haveSettings(){ return true; } void blogi::StaticPage::Settings(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ char url[512]; std::string surl,curl=req->getRequestURL(); size_t urlen = curl.length(); size_t prelen = strlen(Args->config->buildurl("settings/staticpage/",url,512)); if(prelen < urlen){ size_t send=0,sublen=urlen-prelen; for(size_t i =0; i<=sublen; ++i){ switch(curl[prelen+i]){ case '\0': send=i; goto SENDFIND; case '/': send=i; goto SENDFIND; default: continue; } } goto SETTINGSINDEX; SENDFIND: surl=curl.substr(prelen,send); std::cout << surl << std::endl; if(surl=="newpage"){ newPage(req,setdiv); return; }else if(surl=="delpage"){ delPage(req,setdiv); return; }else if(surl=="editpage"){ editPage(req,setdiv); return; } } SETTINGSINDEX: blogi::SQL sql; blogi::DBResult res; sql << "select id,url from static_content"; int scount=Args->database->exec(&sql,res); setdiv << "<div id=\"staticsettings\"><span>Statische Seiten</span><table>"; setdiv << "<tr><th>ID</th><th>URL</th><th>Options</th></tr>"; for(int i=0; i<scount; ++i){ setdiv << "<tr><td>" << res[i][0] << "</td><td>"<< Args->config->buildurl("staticpage/",url,512) << res[i][1] << "</td>" << "<td><a href=\"" << Args->config->buildurl("settings/staticpage/editpage?id=",url,512) << res[i][0] << "\">Edit</a></td>" << "<td><a href=\"" << Args->config->buildurl("settings/staticpage/delpage?id=",url,512) << res[i][0] << "\">Remove</a></td>" <<"</tr>"; } setdiv << "</table><a href=\"" << Args->config->buildurl("settings/staticpage/newpage",url,512) << "\" >Neue Seite Erstellen</a></div>"; } void blogi::StaticPage::newPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ setdiv << "<div id=\"staticsettings\">" << "<span>Statische Seiten</span>" << "<span>Neue Seite</span>" << "</div>"; } void blogi::StaticPage::delPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ } void blogi::StaticPage::editPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ char url[512]; int id=-1; blogi::SQL sql; blogi::DBResult res; libhttppp::HttpForm form; form.parse(req); for(libhttppp::HttpForm::UrlcodedFormData *cdat=form.getUrlcodedFormData(); cdat; cdat=cdat->nextUrlcodedFormData()){ if(strcmp(cdat->getKey(),"id")==0) id=atoi(cdat->getValue()); } if(id<0){ return; } libhttppp::HttpForm::MultipartFormData *cdat=form.getMultipartFormData(); sql.clear(); for (libhttppp::HttpForm::MultipartFormData* curformdat = form.getMultipartFormData(); curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(strcmp(curctdisp->getName(),"url")==0){ sql<< "update static_content set url='"; sql << curformdat->getData(); sql << "' where id='" << id <<"'; "; }else if(strcmp(curctdisp->getName(),"meta")==0){ sql<< "update static_content set meta='"; sql << curformdat->getData(); sql << "' where id='" << id <<"'; "; }else if(strcmp(curctdisp->getName(),"text")==0){ sql<< "update static_content set text='"; sql << curformdat->getData(); sql << "' where id='" << id <<"': "; } } if(!sql.empty()){ Args->database->exec(&sql,res); sql.clear(); } sql << "select id,url,meta,text from static_content where id='"; sql << id << "' LIMIT 1"; if(Args->database->exec(&sql,res)<1){ return; } setdiv << "<div id=\"staticsettings\">" << "<span>Statische Seiten</span>" << "<span>Seite Editieren</span>" << "<form>" << "<span>Url:</span><br>" << "<input name=\"url\" type=\"text\" value=\"" << res[0][1] << "\" /><br>" << "<span>Meta:</span><br>" << "<textarea name=\"meta\" style=\"width:95%; height:200px;\">"<< res[0][2] <<"</textarea><br>" << "<span>Content:</span><br>" << "<textarea name=\"text\" style=\"width:95%; min-height:800px;\">"<< res[0][3] <<"</textarea><br>" << "<button type=\"submit\" formaction=\"" << Args->config->buildurl("settings/staticpage",url,512) << "\">Back</button>" << "<input type=\"submit\" value=\"Save\">" << "</form></div>"; } void blogi::StaticPage::uploadPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ } bool blogi::StaticPage::Controller(netplus::con *curcon,libhttppp::HttpRequest *req){ char url[512]; if (strncmp(req->getRequestURL(),Args->config->buildurl("staticpage",url,512),strlen(Args->config->buildurl("staticpage",url,512)))==0){ std::string surl=req->getRequestURL()+strlen(Args->config->buildurl("staticpage/",url,512)); if(surl.rfind('?')>0){ surl=surl.substr(0,surl.rfind('?')); } if(strstr(req->getRequestURL(),"robots.txt")){ const char *robot = "User-agent: Googlebot\r\n\r\nUser-agent: *\r\nAllow: /"; libhttppp::HttpResponse resp; Loading plugins/staticpage/static.h +8 −0 Changes for plugins/staticpage/static.h: 8 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ namespace blogi { const char* getAuthor(); void initPlugin(); bool haveSettings(); bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req); void Settings(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); private: void newPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void delPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void editPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void uploadPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); }; }; Loading src/blogi.cpp +45 −0 Changes for src/blogi.cpp: 45 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -172,6 +172,48 @@ void blogi::Blogi::logoutPage(netplus::con *curcon,libhttppp::HttpRequest *curre curres.send(curcon,nullptr,0); } void blogi::Blogi::settingsPage(netplus::con* curcon, libhttppp::HttpRequest* curreq){ libhttppp::HttpCookie cookie; cookie.parse(curreq); std::string sessid; if(!PlgArgs->auth->isLoggedIn(curreq,sessid)){ libhttppp::HTTPException err; err[libhttppp::HTTPException::Error] << "you are not logged in permission denied"; throw err; } std::string out; libhtmlpp::HtmlString setgui; char url[512]; setgui << "<div id=\"settings\"><table><tr><td id=\"setnav\" ><ul>"; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(curplg->getInstace()->haveSettings()) setgui << "<li><a href=\"" << PlgArgs->config->buildurl("settings/",url,512) << curplg->getInstace()->getName() << "\">" << curplg->getInstace()->getName() << "</a></li>"; } setgui << "</ul></td><td id=\"setcontent\">"; int relen=strlen(PlgArgs->config->buildurl("settings/",url,512))-strlen(curreq->getRequestURL()); if( relen < 0){ for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(strncmp(curreq->getRequestURL()+strlen(PlgArgs->config->buildurl("settings/",url,512)), curplg->getInstace()->getName(), strlen(curplg->getInstace()->getName()))==0) curplg->getInstace()->Settings(curreq,setgui); } } setgui << "</td></tr></table></div>"; PlgArgs->theme->RenderSite(out,curreq->getRequestURL(),setgui,false); libhttppp::HttpResponse curres; curres.setState(HTTP200); curres.setVersion(HTTPVERSION(1.1)); curres.setContentType("text/html"); curres.send(curcon,out.c_str(),out.length()); } void blogi::Blogi::RequestEvent(netplus::con *curcon){ libhttppp::HttpRequest req; char url[512]; Loading Loading @@ -203,6 +245,9 @@ void blogi::Blogi::RequestEvent(netplus::con *curcon){ }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("login",url,512),strlen(PlgArgs->config->buildurl("login",url,512)))==0){ loginPage(curcon,&req); return; }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("settings",url,512),strlen(PlgArgs->config->buildurl("settings",url,512)))==0){ settingsPage(curcon,&req); return; } Loading src/blogi.h +1 −0 Changes for src/blogi.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ namespace blogi { ~Blogi(); void loginPage(netplus::con*curcon,libhttppp::HttpRequest *curreq); void logoutPage(netplus::con *curcon,libhttppp::HttpRequest *curreq); void settingsPage(netplus::con *curcon,libhttppp::HttpRequest *curreq); void RequestEvent(netplus::con *curcon); private: Plugin *BlogiPlg; Loading Loading
plugins/staticpage/settings.cppdeleted 100644 → 0 +0 −1 Changes for plugins/staticpage/settings.cpp: 0 added lines, 1 removed line. Original line number Diff line number Diff line
plugins/staticpage/static.cpp +134 −3 Changes for plugins/staticpage/static.cpp: 134 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -43,14 +43,145 @@ blogi::StaticPage::~StaticPage(){ void blogi::StaticPage::initPlugin(){ } bool blogi::StaticPage::haveSettings(){ return true; } void blogi::StaticPage::Settings(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ char url[512]; std::string surl,curl=req->getRequestURL(); size_t urlen = curl.length(); size_t prelen = strlen(Args->config->buildurl("settings/staticpage/",url,512)); if(prelen < urlen){ size_t send=0,sublen=urlen-prelen; for(size_t i =0; i<=sublen; ++i){ switch(curl[prelen+i]){ case '\0': send=i; goto SENDFIND; case '/': send=i; goto SENDFIND; default: continue; } } goto SETTINGSINDEX; SENDFIND: surl=curl.substr(prelen,send); std::cout << surl << std::endl; if(surl=="newpage"){ newPage(req,setdiv); return; }else if(surl=="delpage"){ delPage(req,setdiv); return; }else if(surl=="editpage"){ editPage(req,setdiv); return; } } SETTINGSINDEX: blogi::SQL sql; blogi::DBResult res; sql << "select id,url from static_content"; int scount=Args->database->exec(&sql,res); setdiv << "<div id=\"staticsettings\"><span>Statische Seiten</span><table>"; setdiv << "<tr><th>ID</th><th>URL</th><th>Options</th></tr>"; for(int i=0; i<scount; ++i){ setdiv << "<tr><td>" << res[i][0] << "</td><td>"<< Args->config->buildurl("staticpage/",url,512) << res[i][1] << "</td>" << "<td><a href=\"" << Args->config->buildurl("settings/staticpage/editpage?id=",url,512) << res[i][0] << "\">Edit</a></td>" << "<td><a href=\"" << Args->config->buildurl("settings/staticpage/delpage?id=",url,512) << res[i][0] << "\">Remove</a></td>" <<"</tr>"; } setdiv << "</table><a href=\"" << Args->config->buildurl("settings/staticpage/newpage",url,512) << "\" >Neue Seite Erstellen</a></div>"; } void blogi::StaticPage::newPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ setdiv << "<div id=\"staticsettings\">" << "<span>Statische Seiten</span>" << "<span>Neue Seite</span>" << "</div>"; } void blogi::StaticPage::delPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ } void blogi::StaticPage::editPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ char url[512]; int id=-1; blogi::SQL sql; blogi::DBResult res; libhttppp::HttpForm form; form.parse(req); for(libhttppp::HttpForm::UrlcodedFormData *cdat=form.getUrlcodedFormData(); cdat; cdat=cdat->nextUrlcodedFormData()){ if(strcmp(cdat->getKey(),"id")==0) id=atoi(cdat->getValue()); } if(id<0){ return; } libhttppp::HttpForm::MultipartFormData *cdat=form.getMultipartFormData(); sql.clear(); for (libhttppp::HttpForm::MultipartFormData* curformdat = form.getMultipartFormData(); curformdat; curformdat = curformdat->nextMultipartFormData()) { libhttppp::HttpForm::MultipartFormData::ContentDisposition* curctdisp = curformdat->getContentDisposition(); if(strcmp(curctdisp->getName(),"url")==0){ sql<< "update static_content set url='"; sql << curformdat->getData(); sql << "' where id='" << id <<"'; "; }else if(strcmp(curctdisp->getName(),"meta")==0){ sql<< "update static_content set meta='"; sql << curformdat->getData(); sql << "' where id='" << id <<"'; "; }else if(strcmp(curctdisp->getName(),"text")==0){ sql<< "update static_content set text='"; sql << curformdat->getData(); sql << "' where id='" << id <<"': "; } } if(!sql.empty()){ Args->database->exec(&sql,res); sql.clear(); } sql << "select id,url,meta,text from static_content where id='"; sql << id << "' LIMIT 1"; if(Args->database->exec(&sql,res)<1){ return; } setdiv << "<div id=\"staticsettings\">" << "<span>Statische Seiten</span>" << "<span>Seite Editieren</span>" << "<form>" << "<span>Url:</span><br>" << "<input name=\"url\" type=\"text\" value=\"" << res[0][1] << "\" /><br>" << "<span>Meta:</span><br>" << "<textarea name=\"meta\" style=\"width:95%; height:200px;\">"<< res[0][2] <<"</textarea><br>" << "<span>Content:</span><br>" << "<textarea name=\"text\" style=\"width:95%; min-height:800px;\">"<< res[0][3] <<"</textarea><br>" << "<button type=\"submit\" formaction=\"" << Args->config->buildurl("settings/staticpage",url,512) << "\">Back</button>" << "<input type=\"submit\" value=\"Save\">" << "</form></div>"; } void blogi::StaticPage::uploadPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlString& setdiv){ } bool blogi::StaticPage::Controller(netplus::con *curcon,libhttppp::HttpRequest *req){ char url[512]; if (strncmp(req->getRequestURL(),Args->config->buildurl("staticpage",url,512),strlen(Args->config->buildurl("staticpage",url,512)))==0){ std::string surl=req->getRequestURL()+strlen(Args->config->buildurl("staticpage/",url,512)); if(surl.rfind('?')>0){ surl=surl.substr(0,surl.rfind('?')); } if(strstr(req->getRequestURL(),"robots.txt")){ const char *robot = "User-agent: Googlebot\r\n\r\nUser-agent: *\r\nAllow: /"; libhttppp::HttpResponse resp; Loading
plugins/staticpage/static.h +8 −0 Changes for plugins/staticpage/static.h: 8 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -40,8 +40,16 @@ namespace blogi { const char* getAuthor(); void initPlugin(); bool haveSettings(); bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req); void Settings(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); private: void newPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void delPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void editPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); void uploadPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv); }; }; Loading
src/blogi.cpp +45 −0 Changes for src/blogi.cpp: 45 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -172,6 +172,48 @@ void blogi::Blogi::logoutPage(netplus::con *curcon,libhttppp::HttpRequest *curre curres.send(curcon,nullptr,0); } void blogi::Blogi::settingsPage(netplus::con* curcon, libhttppp::HttpRequest* curreq){ libhttppp::HttpCookie cookie; cookie.parse(curreq); std::string sessid; if(!PlgArgs->auth->isLoggedIn(curreq,sessid)){ libhttppp::HTTPException err; err[libhttppp::HTTPException::Error] << "you are not logged in permission denied"; throw err; } std::string out; libhtmlpp::HtmlString setgui; char url[512]; setgui << "<div id=\"settings\"><table><tr><td id=\"setnav\" ><ul>"; for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(curplg->getInstace()->haveSettings()) setgui << "<li><a href=\"" << PlgArgs->config->buildurl("settings/",url,512) << curplg->getInstace()->getName() << "\">" << curplg->getInstace()->getName() << "</a></li>"; } setgui << "</ul></td><td id=\"setcontent\">"; int relen=strlen(PlgArgs->config->buildurl("settings/",url,512))-strlen(curreq->getRequestURL()); if( relen < 0){ for(blogi::Plugin::PluginData *curplg=BlogiPlg->getFirstPlugin(); curplg; curplg=curplg->getNextPlg()){ if(strncmp(curreq->getRequestURL()+strlen(PlgArgs->config->buildurl("settings/",url,512)), curplg->getInstace()->getName(), strlen(curplg->getInstace()->getName()))==0) curplg->getInstace()->Settings(curreq,setgui); } } setgui << "</td></tr></table></div>"; PlgArgs->theme->RenderSite(out,curreq->getRequestURL(),setgui,false); libhttppp::HttpResponse curres; curres.setState(HTTP200); curres.setVersion(HTTPVERSION(1.1)); curres.setContentType("text/html"); curres.send(curcon,out.c_str(),out.length()); } void blogi::Blogi::RequestEvent(netplus::con *curcon){ libhttppp::HttpRequest req; char url[512]; Loading Loading @@ -203,6 +245,9 @@ void blogi::Blogi::RequestEvent(netplus::con *curcon){ }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("login",url,512),strlen(PlgArgs->config->buildurl("login",url,512)))==0){ loginPage(curcon,&req); return; }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("settings",url,512),strlen(PlgArgs->config->buildurl("settings",url,512)))==0){ settingsPage(curcon,&req); return; } Loading
src/blogi.h +1 −0 Changes for src/blogi.h: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ namespace blogi { ~Blogi(); void loginPage(netplus::con*curcon,libhttppp::HttpRequest *curreq); void logoutPage(netplus::con *curcon,libhttppp::HttpRequest *curreq); void settingsPage(netplus::con *curcon,libhttppp::HttpRequest *curreq); void RequestEvent(netplus::con *curcon); private: Plugin *BlogiPlg; Loading