Loading plugins/media/media.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ *******************************************************************************/ #include <plugin.h> #include <editor.h> #include "icon.webp.h" Loading @@ -48,8 +47,7 @@ namespace blogi { } void initPlugin(){ Editor editor; editor.addIcon(icondata,icondatalen,"webp","/editor/image","Insert Image from media albums"); Args->edit->addIcon(icondata,icondatalen,"selimage","webp","Insert Image from media albums"); } bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req){ Loading plugins/staticpage/static.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "static.h" #include "conf.h" #include "editor.h" blogi::StaticPage::StaticPage(){ } Loading Loading @@ -160,10 +161,7 @@ void blogi::StaticPage::newPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlStri setdiv << "<span>Meta:</span><br>" << "<textarea name=\"meta\" style=\"width:95%; height:200px;\"> Schlagwörter für Google </textarea><br>" << "<span>Content:</span><br>"; if(text.empty()) setdiv<< "<textarea name=\"text\" style=\"width:95%; min-height:800px; color:red;\"> <span>Mein HtmlText</span> </textarea><br>"; else setdiv<< "<textarea name=\"text\" style=\"width:95%; min-height:800px;\">" << text <<"</textarea><br>"; Args->edit->displayEditor("text",text.c_str(),setdiv); setdiv<< "<button type=\"submit\" formaction=\"" << Args->config->buildurl("settings/staticpage",url,512) << "\">Back</button>" << "<input type=\"submit\" value=\"Save\">" << "</form></div>"; Loading src/blogi.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ blogi::Blogi::Blogi(netplus::socket *serversocket) : event(serversocket){ PlgArgs->database= new Postgresql(PlgArgs->config->getdbopts()); PlgArgs->session= new Session(); PlgArgs->auth=new Auth(PlgArgs->database,PlgArgs->session); PlgArgs->edit=new Editor(); TemplateConfig tplcfg; tplcfg.config=Config::getInstance(); Loading @@ -78,6 +78,7 @@ blogi::Blogi::Blogi(netplus::socket *serversocket) : event(serversocket){ } blogi::Blogi::~Blogi(){ delete PlgArgs->edit; delete PlgArgs->auth; delete PlgArgs->session; delete PlgArgs->database; Loading Loading @@ -263,6 +264,9 @@ void blogi::Blogi::RequestEvent(netplus::con *curcon){ }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("settings",url,512),strlen(PlgArgs->config->buildurl("settings",url,512)))==0){ settingsPage(curcon,&req); return; }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("editor",url,512),strlen(PlgArgs->config->buildurl("editor",url,512)))==0){ PlgArgs->edit->Controller(curcon,&req); return; } libhtmlpp::HtmlElement index=Page; Loading src/editor.cpp +49 −51 Original line number Diff line number Diff line Loading @@ -28,35 +28,20 @@ #include <algorithm> #include "editor.h" #include "conf.h" namespace blogi { class EditorIcons { public: EditorIcons(){ }; ~EditorIcons(){ } private: class Icons { Icons(){ _nextIcon=nullptr; blogi::Editor::Editor() { _firstIcon=nullptr; _lastIcon=nullptr; } ~Icons(){ delete _nextIcon; blogi::Editor::~Editor(){ delete _firstIcon; delete _lastIcon; } std::string _Icon; std::string _Type; std::string _Url; std::string _Description; Icons *_nextIcon; friend class EditorIcons; }; void addIcon(const unsigned char* icon, size_t iconsize,const char *type,const char *url, const char* description){ void blogi::Editor::addIcon(const unsigned char* icon, size_t iconsize,const char *name,const char *type, const char* description){ if(_firstIcon){ _lastIcon->_nextIcon=new Icons; _lastIcon=_lastIcon->_nextIcon; Loading @@ -66,27 +51,40 @@ namespace blogi { } _lastIcon->_Icon.resize(iconsize); std::copy(icon,icon+iconsize,_lastIcon->_Icon.begin()); _lastIcon->_Name=name; _lastIcon->_Type=type; _lastIcon->_Description=description; } Icons *_firstIcon; Icons *_lastIcon; friend class Editor; } _EditorIcons; }; blogi::Editor::Editor() { void blogi::Editor::displayEditor(const char* inputname,const char *value, libhtmlpp::HtmlString& target){ char url[512]; target << "<div id=\"editor\"><ul> "; for(Icons *curicon=_firstIcon; curicon; curicon=curicon->_nextIcon){ target << "<li><img src=\"" << Config::getInstance()->buildurl("editor/icon/",url,512) << curicon->_Name << "." << curicon->_Type << "\" alt=\"" << curicon->_Description << "\" /></li>"; } blogi::Editor::~Editor(){ target << "</ul><textarea name=\"" << inputname << "\">"; if(value) target << value; target <<"</textarea></div>"; } void blogi::Editor::addIcon(const unsigned char* icon, size_t iconsize,const char *type,const char *url, const char* description){ _EditorIcons.addIcon(icon,iconsize,type,url,description); void blogi::Editor::Controller(netplus::con* curcon, libhttppp::HttpRequest* req){ char url[512]; if(strncmp(req->getRequestURL(),Config::getInstance()->buildurl("editor/icon/",url,512), strlen(Config::getInstance()->buildurl("editor/icon/",url,512) ))==0){ std::string reqfile; std::copy(req->getRequestURL()+strlen(Config::getInstance()->buildurl("editor/icon/",url,512)), req->getRequestURL()+strlen(req->getRequestURL()),std::inserter<std::string>(reqfile,reqfile.begin())); for(Icons *curicon=_firstIcon; curicon; curicon=curicon->_nextIcon){ if(reqfile.substr(0,reqfile.find("."))==curicon->_Name){ libhttppp::HttpResponse resp; resp.setVersion(HTTPVERSION(1.1)); resp.setState(HTTP200); resp.setContentType(std::string("image/").append(curicon->_Type).c_str()); resp.send(curcon,curicon->_Icon.c_str(),curicon->_Icon.length()); return; } } } void blogi::Editor::displayEditor(const char* inputname, libhtmlpp::HtmlElement* target){ } src/editor.h +24 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include <httppp/http.h> #include <htmlpp/html.h> #include <string> Loading @@ -37,11 +38,32 @@ namespace blogi { Editor(); ~Editor(); void addIcon(const unsigned char *icon,size_t iconsize,const char *type,const char *url,const char *description); void addIcon(const unsigned char *icon,size_t iconsize,const char *name,const char *type,const char *description); void displayEditor(const char *inputname,libhtmlpp::HtmlElement *target); void displayEditor(const char *inputname,const char *value,libhtmlpp::HtmlString &target); void Controller(netplus::con *curcon,libhttppp::HttpRequest *req); private: class Icons { public: Icons(){ _nextIcon=nullptr; } ~Icons(){ delete _nextIcon; } std::string _Icon; std::string _Name; std::string _Type; std::string _Description; Icons *_nextIcon; friend class Editor; }; Icons *_firstIcon; Icons *_lastIcon; }; }; Loading
plugins/media/media.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ *******************************************************************************/ #include <plugin.h> #include <editor.h> #include "icon.webp.h" Loading @@ -48,8 +47,7 @@ namespace blogi { } void initPlugin(){ Editor editor; editor.addIcon(icondata,icondatalen,"webp","/editor/image","Insert Image from media albums"); Args->edit->addIcon(icondata,icondatalen,"selimage","webp","Insert Image from media albums"); } bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req){ Loading
plugins/staticpage/static.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include "static.h" #include "conf.h" #include "editor.h" blogi::StaticPage::StaticPage(){ } Loading Loading @@ -160,10 +161,7 @@ void blogi::StaticPage::newPage(libhttppp::HttpRequest* req, libhtmlpp::HtmlStri setdiv << "<span>Meta:</span><br>" << "<textarea name=\"meta\" style=\"width:95%; height:200px;\"> Schlagwörter für Google </textarea><br>" << "<span>Content:</span><br>"; if(text.empty()) setdiv<< "<textarea name=\"text\" style=\"width:95%; min-height:800px; color:red;\"> <span>Mein HtmlText</span> </textarea><br>"; else setdiv<< "<textarea name=\"text\" style=\"width:95%; min-height:800px;\">" << text <<"</textarea><br>"; Args->edit->displayEditor("text",text.c_str(),setdiv); setdiv<< "<button type=\"submit\" formaction=\"" << Args->config->buildurl("settings/staticpage",url,512) << "\">Back</button>" << "<input type=\"submit\" value=\"Save\">" << "</form></div>"; Loading
src/blogi.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ blogi::Blogi::Blogi(netplus::socket *serversocket) : event(serversocket){ PlgArgs->database= new Postgresql(PlgArgs->config->getdbopts()); PlgArgs->session= new Session(); PlgArgs->auth=new Auth(PlgArgs->database,PlgArgs->session); PlgArgs->edit=new Editor(); TemplateConfig tplcfg; tplcfg.config=Config::getInstance(); Loading @@ -78,6 +78,7 @@ blogi::Blogi::Blogi(netplus::socket *serversocket) : event(serversocket){ } blogi::Blogi::~Blogi(){ delete PlgArgs->edit; delete PlgArgs->auth; delete PlgArgs->session; delete PlgArgs->database; Loading Loading @@ -263,6 +264,9 @@ void blogi::Blogi::RequestEvent(netplus::con *curcon){ }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("settings",url,512),strlen(PlgArgs->config->buildurl("settings",url,512)))==0){ settingsPage(curcon,&req); return; }else if(strncmp(req.getRequestURL(),PlgArgs->config->buildurl("editor",url,512),strlen(PlgArgs->config->buildurl("editor",url,512)))==0){ PlgArgs->edit->Controller(curcon,&req); return; } libhtmlpp::HtmlElement index=Page; Loading
src/editor.cpp +49 −51 Original line number Diff line number Diff line Loading @@ -28,35 +28,20 @@ #include <algorithm> #include "editor.h" #include "conf.h" namespace blogi { class EditorIcons { public: EditorIcons(){ }; ~EditorIcons(){ } private: class Icons { Icons(){ _nextIcon=nullptr; blogi::Editor::Editor() { _firstIcon=nullptr; _lastIcon=nullptr; } ~Icons(){ delete _nextIcon; blogi::Editor::~Editor(){ delete _firstIcon; delete _lastIcon; } std::string _Icon; std::string _Type; std::string _Url; std::string _Description; Icons *_nextIcon; friend class EditorIcons; }; void addIcon(const unsigned char* icon, size_t iconsize,const char *type,const char *url, const char* description){ void blogi::Editor::addIcon(const unsigned char* icon, size_t iconsize,const char *name,const char *type, const char* description){ if(_firstIcon){ _lastIcon->_nextIcon=new Icons; _lastIcon=_lastIcon->_nextIcon; Loading @@ -66,27 +51,40 @@ namespace blogi { } _lastIcon->_Icon.resize(iconsize); std::copy(icon,icon+iconsize,_lastIcon->_Icon.begin()); _lastIcon->_Name=name; _lastIcon->_Type=type; _lastIcon->_Description=description; } Icons *_firstIcon; Icons *_lastIcon; friend class Editor; } _EditorIcons; }; blogi::Editor::Editor() { void blogi::Editor::displayEditor(const char* inputname,const char *value, libhtmlpp::HtmlString& target){ char url[512]; target << "<div id=\"editor\"><ul> "; for(Icons *curicon=_firstIcon; curicon; curicon=curicon->_nextIcon){ target << "<li><img src=\"" << Config::getInstance()->buildurl("editor/icon/",url,512) << curicon->_Name << "." << curicon->_Type << "\" alt=\"" << curicon->_Description << "\" /></li>"; } blogi::Editor::~Editor(){ target << "</ul><textarea name=\"" << inputname << "\">"; if(value) target << value; target <<"</textarea></div>"; } void blogi::Editor::addIcon(const unsigned char* icon, size_t iconsize,const char *type,const char *url, const char* description){ _EditorIcons.addIcon(icon,iconsize,type,url,description); void blogi::Editor::Controller(netplus::con* curcon, libhttppp::HttpRequest* req){ char url[512]; if(strncmp(req->getRequestURL(),Config::getInstance()->buildurl("editor/icon/",url,512), strlen(Config::getInstance()->buildurl("editor/icon/",url,512) ))==0){ std::string reqfile; std::copy(req->getRequestURL()+strlen(Config::getInstance()->buildurl("editor/icon/",url,512)), req->getRequestURL()+strlen(req->getRequestURL()),std::inserter<std::string>(reqfile,reqfile.begin())); for(Icons *curicon=_firstIcon; curicon; curicon=curicon->_nextIcon){ if(reqfile.substr(0,reqfile.find("."))==curicon->_Name){ libhttppp::HttpResponse resp; resp.setVersion(HTTPVERSION(1.1)); resp.setState(HTTP200); resp.setContentType(std::string("image/").append(curicon->_Type).c_str()); resp.send(curcon,curicon->_Icon.c_str(),curicon->_Icon.length()); return; } } } void blogi::Editor::displayEditor(const char* inputname, libhtmlpp::HtmlElement* target){ }
src/editor.h +24 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ #include <httppp/http.h> #include <htmlpp/html.h> #include <string> Loading @@ -37,11 +38,32 @@ namespace blogi { Editor(); ~Editor(); void addIcon(const unsigned char *icon,size_t iconsize,const char *type,const char *url,const char *description); void addIcon(const unsigned char *icon,size_t iconsize,const char *name,const char *type,const char *description); void displayEditor(const char *inputname,libhtmlpp::HtmlElement *target); void displayEditor(const char *inputname,const char *value,libhtmlpp::HtmlString &target); void Controller(netplus::con *curcon,libhttppp::HttpRequest *req); private: class Icons { public: Icons(){ _nextIcon=nullptr; } ~Icons(){ delete _nextIcon; } std::string _Icon; std::string _Name; std::string _Type; std::string _Description; Icons *_nextIcon; friend class Editor; }; Icons *_firstIcon; Icons *_lastIcon; }; };