diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2015-05-03 21:14:36 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2015-05-03 21:14:36 +0200 |
commit | a07e48f45e3b922a63aaae58b5bd816b8e324ee1 (patch) | |
tree | c2258783ecacc7005226acedc198ca332763e992 /src/page.cpp | |
parent | 549dffeef49ae25c89d4d1cc6c71c715edfb753f (diff) | |
download | aCms-a07e48f45e3b922a63aaae58b5bd816b8e324ee1.tar.gz aCms-a07e48f45e3b922a63aaae58b5bd816b8e324ee1.tar.bz2 |
started to add pages
Diffstat (limited to 'src/page.cpp')
-rw-r--r-- | src/page.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
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 <cppcms/url_dispatcher.h> +#include <cppcms/url_mapper.h> +#include <cppdb/frontend.h> + +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<Page> 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 |