Superrenderer

Content Management System für proggen.org
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Superrenderer

Beitrag von Xin » So Feb 26, 2012 7:05 pm

So, nach dem Erfolg bei Genesys letzte Woche, packe ich mal einen Screenshot des zukünftigen Webservice hoch. Daran habe ich dieses Wochenende weitergemacht.
Die richtige Website habe ich ja letztens erst online gestellt.
ptgsys_20120226.jpg
Der Service funktioniert mit sogetauften "Renderern". Der HTML-Renderer überträgt die Website 1:1, Grafiken werden über einen FileTransmitter binär übertragen, was quasi ein BinärRenderer ist.
Die Endung .page wird derzeit an einen "Superrenderer" übergeben, dem ich jetzt Layout-Elemente beibringe. So sieht der Spaß dann aus:

Code: Alles auswählen

void SuperRenderer::Render( XSD::Net::HttpResult & result )
{
  Layout layout( "bla" );
  
  layout.Include( "header1.inc" );
  layout.Title( "Genesys Compiler Project" );
  
  layout.AllCSS( "/css/design.css" );
  
  layout.Include( "header2.inc" );
  
  layout.Include( "imageheader.inc" );
  
  layout.Include( "page_pre.inc" );
  
  layout.Spacer();
  layout.TitleGraphic( "img/desert.jpg" );
  layout.Spacer();
  
  
  layout.Headline( 1, "Superrenderer" );
  layout.Spacer();
  layout.Node( "Dies ist eine Notiz." );


  XSD::Type::Parameter * par = result.Url.Parameters.Find( "bla" ); 
  
  if( par )
    layout.String( par->getValue().Embrace( "Dies ist der Inhalt der Variablen bla: \"", "\"" ));
  

  layout.Spacer();
  
  layout.Include( "page_post.inc" );
  layout.Include( "footer.inc" );
 
  if( layout.Render( result ) )
    result.SetCode( XSD::Net::HttpStatusCode::OK );
  else
    result.SetCode( XSD::Net::HttpStatusCode::InternalServerError );
    
  result.SetMimeType( XSD::Net::MimeType::TextHtml );
}
Get und Post-Variablen werden gefressen, Cookies sind an Bord.
Nun gilt es für alle benötigten Elemente entsprechende Layout-Elemente zu schreiben. Anschließend wird vom Superrenderer abgeleitet, um spezialisierte Renderer für komplette Wiki-Seiten, Foren oder Besonderheiten wie Buchrezensionen oder User-Seiten. Und natürlich sämtliche Besonderheiten, wie Anmeldung, private Nachrichten usw.
Jetzt geht der Spaß mit dem CMS los - freie Auswahl, wie das CMS aussehen soll.
Es liegt natürlich nah, dass der Webservice auf kurz oder lang auch programmierbar sein wird.

Ein CMS zu schreiben, machen ja genug Leute hier... da wird das ja wohl nicht so lange dauern. ;-)

Falls jemand helfen will, dann kann man sich langsam Gedanken darüber machen, wie wir das Wiki und die Forumsdatenbank übertragen bekommen. Jemand Lust Konverter zu schreiben? ^^
Ansonsten kann man sich Gedanken machen, wie wir neue Elemente erstellen. Info-Boxen; Bereiche, die man einklappen kann, usw.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Superrenderer

Beitrag von Xin » Di Apr 10, 2012 11:18 am

So... das Wochenende war ich vergleichsweise ruhig, aber alles andere als inaktiv.
Von Freitag bis Sonntag habe ich quasi nur am Rechner gesessen und am CMS programmiert.

Im vorherigen Posting dieses Threads habe ich den Superrenderer beschrieben. Dieser Renderer hat die Aufgabe, Websites unterschiedlich darstellen zu können.
Das bisherige Hauptproblem ist, dass Seiten aufwendig kompiliert (WikiText->HTML) werden müssen und es bisher nur die Möglichkeit gab, Wiki-Seiten als Text zu speichern.

Am Wochenende entstand ein binäres Format, dass nun in einer Datei nicht nur einen Wiki-Text, sondern auch die kompilierte Fassung enthalten kann. Aktuell sind es - um genau zu sein - Paragraphen, also Absätze. Eine Wiki Seite setzt sich dann aus einer Liste von Paragraphen zusammen, so dass man sich dann auch mal einen Absatz aus einem anderen Artikel "borgen" kann.
Das ist die Zielsetzung, also das läuft noch nicht komplett.

Ein Paragraph ist ein einzelner WikiText im Layout. Ein Artikel ist eine Sammlung von Objekten. Das können Paragraphen sein, aber eben auch Überschriften und alles was da noch kommt. Das könnten zum Beispiel auch generierte Bilder sein, die sich als Textbeschreibung wie ein Paragraph verhalten, aber in der ausgewerteten Form wie ein Bild. Während ein Wiki-Renderer sich also in der Datei für die Auflistung der abzugebenen Absätze interessiert, interessiert sich ein Filetransmitter, der eine Grafik aus der Website liefern soll eben nur für die entsprechende Grafik.

An dieser Geschichte arbeite ich zur Zeit.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten