Hi,

In the moment write I little Blogsoftware with witty. Now I have problem with 
internalpath changed, my problem is i got no reactions of my requests here is 
a code example.

[blog.cpp]
#include <Wt/WApplication>
#include <Wt/WBreak>
#include <Wt/WStackedWidget>
#include <Wt/WContainerWidget>
#include <Wt/WLineEdit>
#include <Wt/WPushButton>
#include <Wt/WText>
#include <Wt/WWidget> 
#include <Wt/WComboBox> 
#include <Wt/WTextArea>
#include <Wt/WCssStyleSheet>
#include <Wt/WColor>
#include <Wt/WHBoxLayout> 
#include <Wt/WLength>
#include <Wt/WJavaScript>
#include <Wt/WImage>
#include <Wt/WLogger>

#include "../../model/blog.h"
#include "../../model/navbar.h"
#include "../../model/viewposts.h"
#include "../../model/categoryview.h"

using namespace std;

TuxistApp::TuxistApp(const Wt::WEnvironment& env)
    : Wt::WApplication(env)
{
  setTitle("Tuxist.de");               // application title
  useStyleSheet("style/main.css");
  addAutoJavaScript("document.getElementsByClassName('navbar_right')
[0].style.marginLeft = document.getElementsByClassName('logo')[0].offsetWidth-
document.getElementsByClassName('navbar_right')[0].offsetWidth+'px';");
  Wt::WContainerWidget *data = new Wt::WContainerWidget();
  Wt::WContainerWidget *navbar_right = new Wt::WContainerWidget(); 
  Wt::WContainerWidget *login = new Wt::WContainerWidget();  
  Wt::WStackedWidget *categorynav = new Wt::WStackedWidget();
  content= new Wt::WContainerWidget(); 
  Logo();
  CategoryView categoryView; 
  categoryView.setStack(categorynav);
  categoryView.setWidget(navbar_right);
  categoryView.getCategoryView();
  navbar_right->setStyleClass("navbar_right"); 
  root()->addWidget(navbar_right);
//   getContent(0);
  root()->addWidget(content); 
  login->setStyleClass("login");
  internalPathChanged().connect(this, &TuxistApp::onInternalPathChange);
//   root()->addWidget(data);
//   root()->addWidget(login);
}
void TuxistApp::onInternalPathChange(){
  if(internalPathMatches("/cat/")){  
    getContent(0);
  }
}


void TuxistApp::getContent(int category)
{
  ViewPosts viewposts;
  content->clear();
  viewposts.getcontent_overview(content,category);
}


Wt::WApplication *createApplication(const Wt::WEnvironment& env)
{
    // You could read information from the environment to decide
    // whether the user has permission to start a new application
    return new TuxistApp(env);
}

void TuxistApp::Logo()
{
  Wt::WContainerWidget *logo = new Wt::WContainerWidget();
  Wt::WContainerWidget *topnav = new Wt::WContainerWidget();
  logo->setStyleClass("logo");
  Wt::WImage *logoimg_left = new Wt::WImage("style/images/logo_left.png", 
logo);
  Wt::WImage *logoimg_center = new Wt::WImage("style/images/logo_center.png", 
logo);
  Wt::WImage *logoimg_right = new Wt::WImage("style/images/logo_right.png", 
logo);
  logoimg_left->setAlternateText("logoimg_left");
  logoimg_center->setAlternateText("logoimg_center");
  logoimg_right->setAlternateText("logoimg_right");
  logoimg_left->setStyleClass("logoimg_left");
  logoimg_center->setStyleClass("logoimg_center");
  logoimg_right->setStyleClass("logoimg_right");
  Navbar navbar;
  navbar.setNavbar(topnav);
  logo->addWidget(topnav);
  root()->addWidget(logo);
}

int main(int argc, char **argv)
{
  return WRun(argc, argv, &createApplication);
}


[blog.h]
#ifndef BLOG_H_
#define BLOG_H_

#include <Wt/Dbo/WtSqlTraits>
#include <Wt/Dbo/Types>

class TuxistApp : public Wt::WApplication
{
  public:
    TuxistApp(const Wt::WEnvironment& env);
  private:    
    Wt::WLineEdit *nameEdit_;
    Wt::WText *greeting_;
    Wt::WContainerWidget *navbar_right;
    Wt::WContainerWidget *content;
    Wt::WApplication *resize;
    void getcontent_overview(int category);
    void Logo();
    void getContent(int category);
  public slots:
    void onInternalPathChange();
    
}; 

#endif

[categoryview.cpp]
#include <iostream>
#include <string>

#include <Wt/WStackedWidget>
#include <Wt/WText>
#include <Wt/WWidgetItem>
#include <Wt/WAnchor> 

#include "../../model/categoryview.h"

void CategoryView::setStack(Wt::WStackedWidget  *category)
{
  Category = category;
}

void CategoryView::setWidget(Wt::WContainerWidget *menubar)
{
  Menubar = menubar;
}

void CategoryView::getCategoryView()
{
  Wt::Dbo::backend::Postgres db_con(getenv("TUXCMS_SQLCONFIG"));
  Wt::Dbo::Session session;
  session.setConnection(db_con);
  session.mapClass<CategoryView>("blog_category");
    try {
    session.createTables();
  }catch (...) { }
  Wt::Dbo::Transaction transaction(session); 
  CategoryViews categoryviews = session.find<CategoryView>();
  Wt::WMenu *navbar = new Wt::WMenu(Category, Wt::Vertical, Menubar);
  navbar->setRenderAsList(true);
  for (CategoryViews::const_iterator i =categoryviews.begin(); i != 
categoryviews.end(); ++i){
     std::stringstream s;
     s << (*i)->id;
     Wt::WAnchor *a = new Wt::WAnchor();
     a->setRefInternalPath("/cat/"+s.str());     
     navbar->addItem((*i)->name,a);
  }
  transaction.commit();
}

int CategoryView::getCategoryId(int id)
{
  return id;
}

[categoryview.h]
 
#ifndef CATEGORYVIEW_H_
#define CATEGORYVIEW_H_

#include <Wt/Dbo/backend/Postgres> 
#include <Wt/Dbo/Dbo>
#include <Wt/Dbo/Query> 
#include <Wt/Dbo/WtSqlTraits>
#include <Wt/Dbo/Types>
#include <Wt/WMenu> 

class CategoryView : public Wt::Dbo::Dbo<CategoryView> 
{
  private:
    Wt::WContainerWidget *Menubar;
    Wt::WStackedWidget  *Category;
    typedef Wt::Dbo::collection<Wt::Dbo::ptr<CategoryView>> CategoryViews;
    Wt::Dbo::ptr<CategoryView> entry;
  public:
    int         id;
    Wt::WString name;
    
    template<class Action>
    void persist(Action& a)
    {
      Wt::Dbo::field(a, id, "id");
      Wt::Dbo::field(a, name, "name");
    }
    void getCategoryView();
    void setStack(Wt::WStackedWidget  *category);
    void setWidget(Wt::WContainerWidget *menubar);
    int getCategoryId(int id);
};

#endif

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
witty-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/witty-interest

Reply via email to