Beispiel #1
0
void WTemplate::updateDom(DomElement& element, bool all)
{
  if (changed_ || all) {
    std::set<WWidget *> previouslyRendered;
    std::vector<WWidget *> newlyRendered;

    for (WidgetMap::const_iterator i = widgets_.begin(); i != widgets_.end();
	 ++i) {
      WWidget *w = i->second;
      if (w->isRendered() && w->webWidget()->domCanBeSaved()) {
	previouslyRendered.insert(w);
      }
    }

    bool saveWidgets = element.mode() == DomElement::ModeUpdate;

    previouslyRendered_ = saveWidgets ? &previouslyRendered : 0;
    newlyRendered_ = &newlyRendered;

    std::stringstream html;
    renderTemplate(html);

    previouslyRendered_ = 0;
    newlyRendered_ = 0;

    for (unsigned i = 0; i < newlyRendered.size(); ++i) {
      WWidget *w = newlyRendered[i];
      if (previouslyRendered.find(w) != previouslyRendered.end()) {
	if (saveWidgets)
	  element.saveChild(w->id());
	previouslyRendered.erase(w);
      }
    }

    element.setProperty(Wt::PropertyInnerHTML, html.str());
    changed_ = false;

    for (std::set<WWidget *>::const_iterator i = previouslyRendered.begin();
	 i != previouslyRendered.end(); ++i) {
      WWidget *w = *i;
      w->webWidget()->setRendered(false);
    }
  }

  WInteractWidget::updateDom(element, all);
}
QString HtmlPreviewGenerator::exportHtml(const QString &styleSheet, const QString &highlightingScript)
{
    if (!document) return QString();

    QString header;
    if (!styleSheet.isEmpty()) {
        header += QString("\n<style>%1</style>").arg(styleSheet);
    }

    if (!highlightingScript.isEmpty()) {
        // FIXME: doesn't really belong here
        QString highlightStyle;
        QFile f(QString(":/scripts/highlight.js/styles/%1.css").arg(codeHighlightingStyle));
        if (f.open(QIODevice::ReadOnly | QIODevice::Text)) {
            highlightStyle = f.readAll();
        }

        header += QString("\n<style>%1</style>").arg(highlightStyle);
        header += QString("\n<script>%1</script>").arg(highlightingScript);
        header += "\n<script>hljs.initHighlightingOnLoad();</script>";
    }

    return renderTemplate(header, document->toHtml());
}
int main( int argc, char **argv )
{
  QCoreApplication app( argc, argv );

  Grantlee::Engine *engine = new Grantlee::Engine();

  Grantlee::FileSystemTemplateLoader::Ptr loader = Grantlee::FileSystemTemplateLoader::Ptr( new Grantlee::FileSystemTemplateLoader() );
  loader->setTemplateDirs( QStringList()
                           << ( QCoreApplication::applicationDirPath() + "/template_dir_1" )
                           << ( QCoreApplication::applicationDirPath() + "/template_dir_2" )
                         );

  engine->addTemplateLoader( loader );

  engine->setPluginPaths( QStringList() << GRANTLEE_PLUGIN_PATH );
  qDebug() << "Expect: \"Template 1 content\"";
  renderTemplate( engine, "template1.txt" );
  qDebug() << "Expect: \"Template 2 content\"";
  renderTemplate( engine, "template2.txt" );
  qDebug() << "Expect: \"Template 4 content\"";
  renderTemplate( engine, "template3.txt" );
  qDebug() << "Expect: \"Template 5 content\"";
  renderTemplate( engine, "template6.txt" );
  qDebug() << "Expect: \n" "file://" + QCoreApplication::applicationDirPath() + "/template_dir_2/red.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_2/blue.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_1/black.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_1/white.png";
  renderTemplate( engine, "mediatemplate1.txt" );
  qDebug() << "Expect: \n" "file://" + QCoreApplication::applicationDirPath() + "/template_dir_1/black.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_1/white.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_2/red.png\n"
                             "file://" + QCoreApplication::applicationDirPath() + "/template_dir_2/blue.png";
  renderTemplate( engine, "mediatemplate2.txt" );

  app.exit( 0 );
}
void PartialServiceController::formMenu()
{
    renderTemplate("SystemUIsetting/formMenu");
}
void PartialServiceController::relationTodoListByTab()
{
    renderTemplate("SystemUIsetting/relationTodoListByTab");
}
void PartialServiceController::relationButtonByTodoList()
{
    renderTemplate("SystemUIsetting/relationButtonByTodoList");
}
void PartialServiceController::relationMenusGroupByMenu()
{
    renderTemplate("SystemUIsetting/relationMenusGroupByMenu");
}
void PartialServiceController::formDept()
{
    renderTemplate("HrDepartment/formDept");
}
void PartialServiceController::formTodoList()
{
    renderTemplate("SystemUIsetting/formTodoList");
}
Beispiel #10
0
void PartialServiceController::formButton()
{
    renderTemplate("SystemUIsetting/formButton");
}
Beispiel #11
0
void WTemplate::updateDom(DomElement& element, bool all)
{
  if (changed_ || all) {
    std::set<WWidget *> previouslyRendered;
    std::vector<WWidget *> newlyRendered;

    for (WidgetMap::const_iterator i = widgets_.begin(); i != widgets_.end();
	 ++i) {
      WWidget *w = i->second;
      if (w->isRendered() && w->webWidget()->domCanBeSaved()) {
	previouslyRendered.insert(w);
      }
    }

    bool saveWidgets = element.mode() == DomElement::ModeUpdate;

    previouslyRendered_ = saveWidgets ? &previouslyRendered : 0;
    newlyRendered_ = &newlyRendered;

    std::stringstream html;
    renderTemplate(html);

    previouslyRendered_ = 0;
    newlyRendered_ = 0;

    for (unsigned i = 0; i < newlyRendered.size(); ++i) {
      WWidget *w = newlyRendered[i];
      if (previouslyRendered.find(w) != previouslyRendered.end()) {
	if (saveWidgets)
	  element.saveChild(w->id());
	previouslyRendered.erase(w);
      }
    }

    if (encodeTemplateText_)
      element.setProperty(Wt::PropertyInnerHTML, html.str());
    else
      element.setProperty(Wt::PropertyInnerHTML, encode(html.str()));

    changed_ = false;

    for (std::set<WWidget *>::const_iterator i = previouslyRendered.begin();
	 i != previouslyRendered.end(); ++i) {
      WWidget *w = *i;
      // it could be that the widget was removed/deleted in the mean time
      // as a side-effect of rendering some of the widgets; thus we check
      // that the widget is still a child
      for (WidgetMap::const_iterator j = widgets_.begin();
	   j != widgets_.end(); ++j) {
	if (j->second == w) {
	  w->webWidget()->setRendered(false);
	  break;
	}
      }
    }

    WApplication::instance()->session()->renderer()
      .updateFormObjects(this, true);
  }

  WInteractWidget::updateDom(element, all);
}