From a07e48f45e3b922a63aaae58b5bd816b8e324ee1 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sun, 3 May 2015 21:14:36 +0200 Subject: started to add pages --- src/page.cpp | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/page.cpp (limited to 'src/page.cpp') diff --git a/src/page.cpp b/src/page.cpp new file mode 100644 index 0000000..cff0118 --- /dev/null +++ b/src/page.cpp @@ -0,0 +1,113 @@ +#include "content.hpp" +#include "page.hpp" +#include "strusCms.hpp" + +#include +#include +#include + +namespace apps { + +// page + +page::page( strusCms &cms ) + : master( cms ) +{ + cms.dispatcher( ).assign( "/page/(\\w+)", &page::display, this, 1 ); + + cms.dispatcher( ).assign( "/api/pages", &page::api_pages, this ); + cms.dispatcher( ).assign( "/api/page/(\\w+)", &page::api_page, this, 1 ); +} + +void page::display( std::string slug ) +{ + content::page c( cms ); + ini( c ); + render( "page_display", c ); +} + +void page::api_pages( ) +{ + cppdb::session sql( cms.conn ); + cppdb::result r; + r = sql << "SELECT slug, title, content FROM page"; + std::vector pages; + while( r.next( ) ) { + Page page; + r >> page.slug; + r >> page.title; + r >> page.content; + pages.push_back( page ); + } + + cppcms::json::value j; + + j = pages; + + response( ).out( ) << j; +} + +void page::api_page( std::string slug ) +{ + cppdb::session sql( cms.conn ); + cppdb::result r; + r = sql << "SELECT slug, title, content FROM page WHERE slug=?" << slug << cppdb::row; + if( r.empty( ) ) { + return; + } + + Page page; + r >> page.slug; + r >> page.title; + r >> page.content; + + cppcms::json::value j; + + j = page; + + response( ).out( ) << j; +} + +void page::ini( content::page &c ) +{ + master::ini( c ); +} + +} // namespace apps + +namespace content { + +page::page( apps::strusCms &cms ) + : page_edit( cms ) +{ +} + +page_edit_form::page_edit_form( apps::strusCms &cms ) + : cppcms::form( ), + cms( cms ) +{ + title.message( "Title" ); + title.error_message( "The title must not be empty" ); + content.message( "Content" ); + + save.value( "Save" ); + preview.value( "Preview" ); + + add( title ); + add( content ); + add( save ); + add( preview ); + + title.non_empty( ); +} + +bool page_edit_form::validate( ) +{ + if( !form::validate( ) ) { + return false; + } + + return true; +} + +} // namespace content -- cgit v1.2.3-54-g00ecf