summaryrefslogtreecommitdiff
path: root/src/aCms.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/aCms.cpp')
-rw-r--r--src/aCms.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/aCms.cpp b/src/aCms.cpp
new file mode 100644
index 0000000..52f533d
--- /dev/null
+++ b/src/aCms.cpp
@@ -0,0 +1,71 @@
+#include "aCms.hpp"
+
+#include <cppcms/url_mapper.h>
+#include <cppcms/http_response.h>
+#include <cppcms/json.h>
+#include <cppdb/frontend.h>
+
+namespace {
+
+void setup_dbconnection( cppdb::session &sql )
+{
+ std::string driver = sql.driver( );
+
+ if( driver == "sqlite3" ) {
+ sql << "PRAGMA foreign_keys = 1" << cppdb::exec;
+ }
+}
+
+}
+
+namespace apps {
+
+aCms::aCms( cppcms::service &srv )
+ : cppcms::application( srv ),
+ master( *this ),
+ intro( *this ),
+ user( *this ),
+ page( *this ),
+ conn( settings( ).get<std::string>( "aCms.db_connection" ) ),
+ mail( settings( ).get<std::string>( "aCms.mail.server" ),
+ settings( ).get<unsigned short>( "aCms.mail.port" ),
+ settings( ).get<std::string>( "aCms.mail.username" ),
+ settings( ).get<std::string>( "aCms.mail.password" ),
+ settings( ).get<std::string>( "aCms.mail.from" )
+ )
+{
+ locale_name = "en";
+ script = settings( ).get<std::string>( "aCms.script" );
+ media = settings( ).get<std::string>( "aCms.media" );
+
+ cppdb::session sql( conn );
+ sql.once( setup_dbconnection );
+
+ add( master );
+ add( intro );
+ add( user );
+ add( page );
+
+ master.register_common_pages( );
+
+ mapper( ).root( root( ) );
+}
+
+std::string aCms::root( std::string l )
+{
+ return script;
+ // TODO: localization later
+ //~ if( l.empty( ) ) l = locale_name;
+ //~ return script + "/" + l;
+}
+
+std::string aCms::media_root( std::string l )
+{
+ return media;
+ // TODO: localization later
+ //~ if( l.empty( ) ) l = locale_name;
+ //~ return script + "/" + l;
+}
+
+
+}