Commit 0049ca29 authored by jan.koester's avatar jan.koester
Browse files

you can now create media albums

parent 41e83bcb
Loading
Loading
Loading
Loading
+90 −1
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/

#include <htmlpp/html.h>
#include <httppp/http.h>

#include <plugin.h>

#include "icon.webp.h"
@@ -46,11 +49,97 @@ namespace blogi {
            return "Jan Koester";
        }

        bool haveSettings(){
            return true;
        }

        void newPage(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){
            int id = -1;
            std::string albumname;
            blogi::SQL sql,sql2;
            blogi::DBResult res,res2;

            sql << "select id,username from users";

            libhttppp::HttpForm form;

            form.parse(req);

            for(libhttppp::HttpForm::UrlcodedFormData *curdat=form.getUrlcodedFormData(); curdat; curdat=curdat->nextUrlcodedFormData()){
                if(strcmp(curdat->getKey(),"userid")==0)
                    id=atoi(curdat->getValue());
                else if(strcmp(curdat->getKey(),"albumname")==0)
                    albumname=curdat->getValue();
            }

            if(id >0 && !albumname.empty()){
                time_t t = time(NULL);
                struct tm time = { 0 };
                char ttmp[26];
                localtime_r(&t,&time);
                asctime_r(&time,ttmp);
                sql2 << "INSERT INTO media_albums (name,owner,created) VALUES ('"; sql2.escaped(albumname.c_str()) << "','" << id << "','" << ttmp<< "')";
                Args->database->exec(&sql2,res2);
            }

            setdiv << "<form method=\"POST\" ><span>Albumname</span>:<input name=\"albumname\" type=\"text\" />"
                   << "<select name=\"userid\" >";
            int n = Args->database->exec(&sql,res);
            for(int i=0; i <n; ++i){
                setdiv << "<option value=\"" << res[i][0] <<"\">" << res[i][1] << "</option>";
            }
            setdiv << "</select>"
                   << "<input value=\"create\" type=\"submit\" /></form>";
        }

        void editAlbum(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){
            setdiv << "<div><span>Edit media library</span><br>"
                   << "</div>";
        }

        void Settings(libhttppp::HttpRequest * req, libhtmlpp::HtmlString & setdiv){
            char url[512];

            std::string suburl;

            suburl=req->getRequestURL()+strlen(Args->config->buildurl("settings/media/",url,512));

            size_t delimter_url=suburl.find("/");

            if(delimter_url!=std::string::npos){
                suburl=suburl.substr(0,delimter_url);
            }

            if(suburl=="editalbum"){
                editAlbum(req,setdiv);
                return;
            }

            setdiv << "<div><span>media library</span><br><table>";
            blogi::SQL sql;
            blogi::DBResult res;

            sql << "SELECT media_albums.id,media_albums.name,media_albums.owner,media_albums.created,users.username"
                << " FROM media_albums LEFT JOIN users ON owner=users.id";

            setdiv << "<tr><th>Albumname</th><th>Owner</th><th>Created</th><th>Actions</th></tr>";
            int n = Args->database->exec(&sql,res);
            for(int i=0; i <n; ++i){
                setdiv << "<tr><td>"<< res[i][1] <<"</td><td>" << res[i][4] << "</td><td>" << res[i][3] <<"</td><td>"
                       << "<a href=\""<< Args->config->buildurl("settings/media/delalbum?",url,512) << "albumid" << res[i][0] <<"\">Remove</a>"
                       << " <a href=\""<< Args->config->buildurl("settings/media/editalbum?",url,512) << "albumid=" << res[i][0] <<"\">Edit</a>"
                       << "</td></tr>";
            }
            setdiv << "</table><br>";
            newPage(req,setdiv);
            setdiv << "</div>";
        }

        void initPlugin(){
            Args->edit->addIcon(icondata,icondatalen,"selimage","webp","Insert Image from media albums");
        }

        bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req){
        bool Controller(netplus::con *curcon,libhttppp::HttpRequest *req,libhtmlpp::HtmlElement page){
            return false;
        }
    };