diff options
author | murphy <murphy@rubychan.de> | 2006-04-10 03:06:50 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2006-04-10 03:06:50 +0000 |
commit | 5ee15661dbc2da70927f588e310315233aff6eea (patch) | |
tree | 08c959a52080e4cbcc873b49c8e5f1ed42a75ccf /bench | |
parent | 132b75e58dba4c93278721d60f177cfbee7d0e46 (diff) | |
download | coderay-5ee15661dbc2da70927f588e310315233aff6eea.tar.gz |
Large update: Scanners for HTML, RHTML and Nitro-XHTML added.
CSS style changes/enhancments (mainly the new background color for inline code, affects all Ruby code.)
Demos and tests adjusted.
Plugin: new PluginHost::default method.
Scanner:
- New setup method
- ability to re-use a scanner
- ability to keep the tokens
- minor changes to token caching and string flattening
Encoder: Error if token content is neither String nor Symbol.
HTML encoder:
- more warnings for unclosed tokens
- output now UTF-8
Ruby Scanner:
- bug: symbols before => now do not include =; {:foo=>bar} is valid Ruby code
- try to close all open tokens
- constants now all with specific namespace (for speed, I hope)
Styles: new :entity/en class.
Test suite now gives hinted HTML output.
Diffstat (limited to 'bench')
-rw-r--r-- | bench/bench.rb | 1 | ||||
-rw-r--r-- | bench/example.rhtml | 561 | ||||
-rw-r--r-- | bench/example.xhtml | 376 |
3 files changed, 938 insertions, 0 deletions
diff --git a/bench/bench.rb b/bench/bench.rb index 533a893..efda06e 100644 --- a/bench/bench.rb +++ b/bench/bench.rb @@ -69,6 +69,7 @@ Benchmark.bm(20) do |bm| if $dump_input @size = CodeRay::Tokens.load(data).text_size else + raise 'Example file is empty.' if data.empty? unless @size.zero? data += data until data.size >= @size data = data[0, @size] diff --git a/bench/example.rhtml b/bench/example.rhtml new file mode 100644 index 0000000..041bec1 --- /dev/null +++ b/bench/example.rhtml @@ -0,0 +1,561 @@ +<% @title = 'Moderatoren-Interface' %> + +<dl> + <dt><%= link_to 'Proben', :controller => '/admin/proben' %></dt> + <dd>Die angesetzten Proben des Orchesters</dd> + <dt><%= link_to 'Auftritte', :controller => '/admin/proben' %></dt> + <dd>Die Auftritte des Orchesters</dd> + <%- if @valid_user and @valid_user.admin? -%> + <dt><%= link_to 'Benutzer', :controller => '/admin/user' %></dt> + <dd>Benutzer organisieren (nur für den Admin)</dd> + <%- end -%> +</dl> +<% @title = 'Anmeldung' %> + +<%= render :partial => 'user_form', :object => @user %> +<% @title = 'Administrator erstellen' %> + +<%= render :partial => 'user_form', :object => @user %> +<%= form_tag %> +<table> + <tr> + <td>Name:</td> + <td><%= text_field 'user', 'name' %></td> + </tr> + <tr> + <td>Passwort:</td> + <td><%= password_field 'user', 'password' %></td> + </tr> + <tr> + <td></td> + <td><%= submit_tag 'Anmelden' %></td> +</table> +<%= end_form_tag %> +<% @title = 'Neuer Benutzer' -%> +<%= error_messages_for :user %> +<%= render :partial => 'form', :object => @user %> +<%= form_tag %> +<table> + <tr> + <td>Name:</td> + <td><%= text_field 'user', 'name' %></td> + </tr> + <tr> + <td>Passwort:</td> + <td><%= password_field 'user', 'password' %></td> + </tr> + <tr> + <td></td> + <td><%= submit_tag 'Anlegen' %></td> +</table> +<%= end_form_tag %> +<% @title = 'Auftritte' %> + +<table cellspacing="0" summary="Auftritte: Wann treten wir Wo auf?"> + <%= render :partial => 'head' %> + <%= render :partial => 'day', :collection => @days %> +</table> +<% day, auftritte = *day -%> +<% + for auftritt in auftritte +-%> + +<tr> + <td class="pplan_datum"> + <%= colorize day.to_s(:dots) if day %> + <% if day and day.wday == 6 %><br /><em>Samstag</em><% end %> + </td> + <td class="pplan_zeit"> + <%= colorize auftritt.time %> + </td> + <td class="pplan_stueck"> + <%= colorize auftritt.program %> + <%= link_to 'E', :controller => 'admin/auftritte', :action => :edit, :id => auftritt %> + </td> + <td class="pplan_besetzung"> + <%= colorize(auftritt.place, 'Ort: ') + '<br />' unless auftritt.place.blank? %> + </td> +</tr> + +<% + day = nil + end +-%> +<tr> + <th scope="col" class="pplan_datum">Datum</th> + <th scope="col" class="pplan_zeit">Zeit</th> + <th scope="col" class="pplan_stueck">Programm</th> + <th scope="col" class="pplan_besetzung">Ort</th> +</tr> +<% @title = "Besetzung - #{@instrument.name}" %> + +<p> +<%= pluralize(@members.size, 'Schüler spielt', 'Schüler spielen') %> <%= h @instrument.name %>: +</p> + +<table class="members"> + <%= render :partial => 'member', :collection => @members %> +</table> +<% @title = 'Besetzung: %d Mitglieder' % Member.count -%> + +<div class="page-links"> +<% if params[:action] == 'all' -%> +<%= link_to 'seitenweise', :action => :index %> +<% else -%> +<%= link_to_if @member_pages.current.previous, '<<', :page => @member_pages.current.previous %> +| <%= link_to 'alle', :action => :all %> | +<%= link_to_if @member_pages.current.next, '>>', :page => @member_pages.current.next %> +<% end -%> +| <%= link_to 'Nach Instrumenten', :action => :select_instrument %> +</div> + +<table class="members"> +<%= render :partial => 'member', :collection => @members %> +</table> +<% @title = "Besetzung - Instrument wählen" %> + +<ul> +<% for instr in @instruments -%> +<li> + <%= link_to h(instr.name), :action => :instrument, :id => instr.name %> + <span class="counter">(<%= h instr.members.size %>)</span> +</li> +<% end -%> +</ul> +<% @title = "Besetzung: #{@member.name}" -%> + +<dl> + +<dt>Instrument / Aufgabe:</dt> +<dd><%= link_to_instruments_of @member %></dd> + +<dt>Geburtstag:</dt> +<dd><%= h @member.birthday.to_s(:dots) %></dd> + +<dt>Adresse:</dt> +<dd><%= h @member.street %><br /><%= h @member.plz %></dd> + +<dt>Telefon:</dt> +<dd><%= h @member.phone %></dd> + +<dt>Email:</dt> +<dd><%= mail_to @member.email, @member.email, :encode => 'javascript' %></dd> + +</dl> +<tr class="member"> + <td><%= link_to member.name, :action => :show, :id => member %>: + <%= link_to_instruments_of member %> + </td> +</tr> +<% @title = 'Arbeitsgruppen' -%> +<p> + Die Arbeitsgruppen sind verantwortlich für die Organisation und Durchführung verschiedenster Aufgaben: +</p> + +<ul class="liste"> + + <li><b>Plakate und Konzertkarten</b> + <ul> + <li>Frau Schraps</li> + <li>Paul-Robert Achcenich</li> + <li>Josefine Dahms</li> + </ul> + </li> + + <li><b>Noten</b><br /> + <ul> + <li>Frau Puppe</li> + <li>Theresa Rebin</li> + </ul> + </li> + + <li><b>Programme</b><br /> + <ul> + <li>?</li> + </ul> + </li> + + <li><b>Instrumentenstransporte</b><br /> + <ul> + <li>Frau Feldmann</li> + <li>Knut Müller</li> + <li>Patrick Wolter</li> + <li>Alexaner Wolf</li> + </ul> + </li> + + <li><b>Internetseite</b><br /> + <ul> + <li>Frau Sternbeck</li> + <li>Uwe Ritzschke</li> + <li>Paul-Robert Achcenich</li> + <li>Knut Müller</li> + <li>Alexander Wolf</li> + </ul> + </li> + +</ul> +<% @title = 'Chronik' -%> +<p> + Das Jugendsinfonieorchester Marzahn-Hellersdorf wurde im Januar 2005 an der + Musikschule Marzahn-Hellersdorf gegründet und gab im Mai 2005 sein erstes + umjubeltes Konzert im FEZ Wuhlheide. Das Orchester umfasst zur Zeit ca. 65 + jugendliche Musiker und soll auf die Größe eines ausgewachsenen + Sinfonieorchesters erweitert werden (80-100 Musiker). +</p> + +<p> + Als musikalischer Leiter konnte der Dirigent und Echo-Preisträger Jobst + Liebrecht gewonnen werden, der die Musikschule schon aus einer früheren + Zusammenarbeit anlässlich der Kinderoper 'Pollicino' von Hans Werner Henze + kennt. Das Orchester probt wöchentlich. Neben den Tuttiproben finden außerdem + ebenfalls wöchentlich Stimmsatzproben statt, die von Lehrkräften betreut werden. + Das gemeinsame Ziel ist der Aufbau eines leistungsstarken, lebendigen + Klangkörpers, der die Jugendlichen und die Zuhörer ganz neu und direkt für die + Orchestermusik begeistert und diese Musik in den sozialen Brennpunkt Marzahn- + Hellersdorf trägt. +</p> + +<p> + Im Jahr sind etwa 2-3 Konzertprogramme geplant, mit denen wir in Konzertsälen + auftreten. Das erste Konzert des Jugendsinfonieorchesters Marzahn-Hellersdorf + wurde von DeutschlandRadio Kultur aufgezeichnet und in einer Sendung mit dem + Titel „EINSTAND: Nicht nur auf der Strasse herumhängen” porträtiert. + Wir wollen außerdem vor Ort in Marzahn und Hellersdorf in die Öffentlichkeit + gehen und spielen, um so für die Kultur zu werben und auch weitere Kinder und + Jugendliche für die Musik und fürs Mitmachen zu gewinnen. Durch die Einrichtung + eines zusätzlichen Vororchesters wird längerfristig versucht, die Arbeit auf ein + breites Fundament zu stellen, eine Werkstatt, ein musikalisches Bauhaus zu + gründen. Wenn die Orchesterarbeit erfolgreich angelaufen ist, sollen auch + übergreifende Projekte (Theater, Tanz, Chor) stattfinden. +</p> + +<p> + Das Orchester will Musik von heute spielen in jedem Sinn, ob es sich um Stücke + aus der sinfonischen Tradition handelt oder um zeitgenössische Musik. Wir kennen + keine Berührungsängste und sind neugierig auf Musik aller Art und möchten diese + Neugierde mit unserem Publikum teilen. +</p> +<% @title = 'Dirigent - Jobst Liebrecht' -%> +<p> + <%= image_tag 'jobstliebrecht.jpg', :alt => 'Jobst Liebrecht', :title => 'Jobst Liebrecht', :class => 'pic_right' %> + Jobst Liebrecht studierte Dirigieren an der Musikhochschule in München und bei Peter Eötvös. Sein spezielles Interesse + für neue Musik führte schnell zur Zusammenarbeit mit renommierten Ensembles auf dem Gebiet wie dem Ensemble Modern, + Frankfurt, dem Klangforum-Ensemble, Wien, dem Ensemble Köln sowie dem Ensemble United Berlin. Aufnahmen entstanden beim + WDR, beim DeutschlandRadio Berlin, beim BR und beim SFB. Er dirigierte u.a. das Rundfunk Sinfonieorchester Berlin, die + Duisburger Philharmoniker und das Münchner Kammerorchester sowie in den Opernhäusern in Halle und Giessen. Tourneen im + Ausland führten ihn nach Argentinien, Georgien, Südkorea und in die USA. +</p> + +<p> + Zu den Ur- und Erstaufführungen, die er betreut hat, gehören die Opern 'Lunu' von Moritz Eggert, 'Gloria von Jaxtberg' von + HK Gruber sowie in Zusammenarbeit mit dem Regisseur Einar Schleef das Musiktheaterspiel 'Der Golem in Bayreuth' von Ulla + Berkewicz/Lesch Schmidt am Wiener Burgtheater. +</p> + +<p> + Jobst Liebrecht war mehrere Jahre lang Assistent von Hans Werner Henze und auch immer wieder pädagogisch tätig. Seine + Aufnahme von Henzes Märchenoper 'Pollicino', die als CD bei Wergo erschienen ist, wurde mit dem ECHO-Preis 2004 in der + Sparte 'Klassik für Kinder' ausgezeichnet. +</p> + +<p> + Als Komponist ist Jobst Liebrecht mit Liedern, Kammermusik sowie Bühnenmusiken an die Öffentlichkeit getreten. +</p> +<% message, backtrace = session[:boom] -%> +<% @title = 'Fehler in Zeile %d' % [backtrace[/line\s+#(\d+)/,1]] -%> +<div class="flash"> +<div class="error"><%= h message %></div> +</div> +<%= debug backtrace %> +<% cache :action_suffix => (action = params[:action]) do -%> +<p> +Der Inhalt für die Aktion <%= h action.inspect %> fehlt noch. +</p> +<% end -%> +<% @title = 'Schulferien Berlin' -%> +<p> + Unser Orchester besteht zu einem sehr großen Teil aus Schülern und auch die + Musikschule, der die meisten von uns entstammen, hat in den Schulferien + geschlossen.<br /> + Deshalb finden innerhalb der <strong>Berliner Ferienzeiten keine Proben</strong> statt. +</p> + +<table cellspacing="0" summary="Schulferien" class="ferien"> + <tr> + <th scope="col" class="ferien_zeitraum">Zeitraum</th> + <th scope="col" class="ferien_jahr">2006</th> + <th scope="col" class="ferien_jahr">2007</th> + <th scope="col" class="ferien_jahr">2008</th> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Winter</td> + <td class="ferien_jahr"> + 30.01. - 03.02.</td> + <td class="ferien_jahr"> + 05.02. - 10.02.</td> + <td class="ferien_jahr"> + 04.02. - 09.02.</td> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Ostern/Frühjahr</td> + <td class="ferien_jahr"> + 10.04. - 21.04.</td> + <td class="ferien_jahr"> + 02.04. - 13.04.</td> + <td class="ferien_jahr"> + 17.03. - 28.03.</td> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Himmelf./Pfingsten</td> + <td class="ferien_jahr"> + 30.04. / 18.05.</td> + <td class="ferien_jahr"> + 30.04. / 18.05.</td> + <td class="ferien_jahr"> + 02.05.</td> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Sommer</td> + <td class="ferien_jahr"> + 06.07. - 19.08.</td> + <td class="ferien_jahr"> + 12.07. - 25.08.</td> + <td class="ferien_jahr"> + 17.07. - 30.08.</td> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Herbst</td> + <td class="ferien_jahr"> + 02.10. - 14.10.</td> + <td class="ferien_jahr"> + 15.10. - 27.10.</td> + <td class="ferien_jahr"> + </td> + </tr> + + <tr> + <td class="ferien_zeitraum"> + Weihnachten</td> + <td class="ferien_jahr"> + 27.12. - 05.01.07</td> + <td class="ferien_jahr"> + 24.12. - 04.01.08</td> + <td class="ferien_jahr"> + </td> + </tr> + +</table> +<% @title = 'Termine' -%> + +<ul> + <li><%= link_to 'Auftritte', :controller => '/auftritte' %></li> + <li><%= link_to 'Schulferien', :controller => '/content', :action => :schulferien %></li> +</ul> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> +<head> + <%= tag 'meta', :'http-equiv' => 'content-language', :content => 'de' %> + <%= tag 'meta', :'http-equiv' => 'content-type', :content => 'text/html; charset=UTF-8' %> + <meta name="AUTHOR" content="Knut Müller, Alexander Wolf, Uwe Ritzschke, Paul-Robert Achcenich" /> + <meta name="Publisher" content="Knut Müller, Alexander Wolf, Uwe Ritzschke, Paul-Robert Achcenich" /> + <meta name="Copyright" content="Knut Müller, Alexander Wolf, Uwe Ritzschke, Paul-Robert Achcenich, 2006" /> + <meta name="Keywords" content="Jugendsinfonieorchester,Marzahn,Hellersdorf,Marzahn-Hellersdorf,Berlin,Orchester,Jobst Liebrecht,FEZ,Pollicino,Moritz Eggert,Popel,Konzert" /> + <meta name="Description" content="JSO - JugendSinfonieOrchester der Musikschule Marzahn-Hellerdorf in Berlin" /> + <meta name="Page-topic" content="JSO Marzahn-Hellersdorf - " /> + + <meta name="Audience" content="Alle" /> + <meta name="content-language" content="DE" /> + <meta name="Page-Type" content="Homepage" /> + <meta name="robots" content="all" /> + + <title>JSO<%-if @title-%> - <%= h @title %><%- end -%></title> + <%= stylesheet_link_tag '/rcss/main' %> + <%#= stylesheet_link_tag 'main' %> + <%= javascript_include_tag 'nospam' %> + <%#= javascript_include_tag :defaults %> +</head> + +<body> + +<table style="width:100%; height:100%;" cellspacing="10"> + <tr> + <td style="height:120px; width:15%;text-align:center;vertical-align:middle;"> + <%= image_tag 'JSO-Logo.gif', :alt => 'JSO-Logo' %> + </td> + <td id="title"> + <div id="musikschule"><a href="http://www.musikschule-marzahn-hellersdorf.de">Musikschule Marzahn Hellersdorf</a></div> + <div id="orchester"><strong>j</strong>ugend<strong>s</strong>infonie<strong>o</strong>rchester</div> + </td> + </tr> + <tr> + <td style="width:15%;"> +<% if valid_user -%> +<ul> + <li class="menu2"><%= link_to "Logout #{valid_user.name}", :controller => '/admin/admin', :action => :logout %></li> +</ul> +<% end -%> +<% cache :controller => 'menu', :action => 'main_menu' do -%> + <%= render_component :controller => 'menu', :action => 'index' %> +<% end -%> + </td> + <td id="main"> +<% unless @flash.keys.empty? -%> +<div class="flash"> + <%- for kind, msg in @flash -%> + <div class="<%= h kind %>"><%= h msg %></div> + <%- end -%> +</div> +<% end -%> +<%= content_tag 'h3', h(@title) if @title %> +<%= @content_for_layout %> + </td> + </tr> + <tr> + <td style="height:80px; width:15%;"> + </td> + <td style="height:80px;"> + <div style="position:relative; top:80px; right:0px; text-align:right; font-size: x-small; color: #003;"> + powered by <a href="http://rubyonrails.org">Ruby on Rails</a> <%= Rails::Info.properties.value_for 'Rails version' %> [<%= h RAILS_ENV[/^./] %>] + <%= image_tag 'css.png', :alt => 'valid CSS', :title => 'valid Cascading Style Sheet', :style => 'display: inline; vertical-align: middle' %> + <%= image_tag 'xhtml11.png', :alt => 'valid XHTML 1.1', :title => 'valid eXtensible Hypertext Markup Language 1.1', :style => 'display: inline; vertical-align: middle' %> + </div> + </td> + </tr> +</table> + +</body> + +</html> +<% @title = 'Übersicht' -%> + +<h4>nächste Probe</h4> +<table cellspacing="0" summary="Probenplan: Wann wird Was geprobt?" class="proben"> + <%= render :partial => 'proben/head' %> + <%= render :partial => 'proben/day', :object => @next_probe %> +</table> +<h4><%= link_to 'weitere Proben...', :controller => 'proben' %></h4> + +<h4>nächster Auftritt</h4> +<table cellspacing="0" summary="Auftritte: Wann treten wir Wo auf?" class="auftritte"> + <%= render :partial => 'auftritte/head' %> + <%= render :partial => 'auftritte/day', :object => @next_auftritt %> +</table> +<h4><%= link_to 'mehr Auftritte...', :controller => 'auftritte' %></h4> +<ul> + <%= category 'Übersicht', home_url %> + <%= subcat 'Wer sind wir?', :wer %> + <%= subcat 'Dirigent' %> + <%= subcat 'Besetzung', url_for(:controller => '/besetzung') %> + <%= subcat 'Repertoire' %> + + <%= category 'Termine' %> + <%= subcat 'Auftritte', url_for(:controller => '/auftritte', :action => :plan) %> + <%= subcat 'Schulferien' %> + + <%= category 'Probenplan', url_for(:controller => '/proben', :action => :plan) %> + + <%= category 'Organisation' %> + <%= subcat 'Orchesterrat' %> + <%= subcat 'Arbeitsgruppen' %> + + <%= category 'Chronik' %> + <%= subcat 'Konzerte' %> + <%= subcat 'Audio' %> + <%= subcat 'Presse' %> + + <%= category 'Links', '#' %> + <%= subcat 'Bilderseite', 'http://musikschule.iden04.de' %> + <%= subcat 'Musikschule', 'http://www.musikschule-marzahn-hellersdorf.de' %> + + <li><br /></li> + + <%= category 'Kontakt' %> +</ul> +<% @title = 'Probenplan' %> + +<table cellspacing="0" summary="Probenplan: Wann wird Was geprobt?"> + <%= render :partial => 'head' %> + <%= render :partial => 'day', :collection => @days %> +</table> + +<p style="font-size:14px; margin-top:-10px; padding-top:0px; padding-left:40px;"> +Ort (wenn nicht anders angegeben): Schule am Pappelhof +</p> + +<%= render_partial 'raum' %> +<% day, proben = *day -%> +<% + for probe in proben +-%> + +<tr> + <td class="pplan_datum"> + <%= colorize day.to_s(:dots) if day %> + <% if day and day.wday == 6 %><br /><em>Samstag</em><% end %> + </td> + <td class="pplan_zeit"> + <%= colorize probe.time %> + </td> + <td class="pplan_stueck"> + <%= colorize(probe.place, 'Ort: ') + '<br />' unless probe.place.blank? %> + <%= colorize probe.program %> + <%= link_to 'E', :controller => 'admin/proben', :action => :edit, :id => probe %> + </td> + <td class="pplan_besetzung"> + <%= h probe.instrumentation %> + </td> +</tr> + +<% + day = nil + end +-%> +<tr> + <th scope="col" class="pplan_datum">Datum</th> + <th scope="col" class="pplan_zeit">Zeit</th> + <th scope="col" class="pplan_stueck">Stücke</th> + <th scope="col" class="pplan_besetzung">Besetzung</th> +</tr> +<h4>Probenräume</h4> +<table cellspacing="0" summary="Probenräume: Wer probt Wo?"> + <tr> + <th scope="col" class="praum_wer">Wer</th> + <th scope="col" class="praum_raum">Raum</th> + <th scope="col" class="praum_adresse">Adresse</th> + + </tr> + <tr> + <td class="praum_wer">Streicher</td> + <td class="praum_raum">Schule am Pappelhof<br />(Raum Nr.)</td> + <td class="praum_adresse">(Anschrifft Pappelhofschule)</td> + </tr> + <tr> + + <td class="praum_wer">Blechbläser</td> + <td class="praum_raum">Musikschule Marzahn<br />(Raum Nr.)</td> + <td class="praum_adresse">(Anschrifft Musikscule Marzahn)</td> + </tr> + <tr> + <td class="praum_wer">Holzbläser</td> + + <td class="praum_raum">Schule am Pappelhof<br />(Raum Nr.)</td> + <td class="praum_adresse">(Anschrifft Pappelhofschule)</td> + </tr> + <tr> + <td class="praum_wer">...</td> + <td class="praum_raum">(Ort)<br />(Raum Nr.)</td> + + <td class="praum_adresse">(Anschrifft)</td> + </tr> +</table> diff --git a/bench/example.xhtml b/bench/example.xhtml new file mode 100644 index 0000000..a08cf75 --- /dev/null +++ b/bench/example.xhtml @@ -0,0 +1,376 @@ +<html> + <head> + <script lang="javascript" type="text/javascript"> + // <!-- + function toggleVisible(element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + return false; + } + // --> + </script> + <title>Error</title> + <style> + .path { + padding: 5px; + font-size: 140%; + background: #ddd; + } + .error { + padding: 5px; + padding-top: 15px; + font-size: 140%; + color: #f00; + } + .load { + padding: 5px; + color: #555; + } + .source { + border: 1px solid #ccc; + padding: 10px; + margin-top: 10px; margin-bottom: 10px; + } + h2 { + padding-left: 5px; + background: #eee; + } + </style> + </head> + <body> + <h1>Error</h1> + +<?r + if Run.mode == :debug + require 'cgi' +?> + <?r for error, path in @context.rendering_errors ?> + <div class="path"><strong>Path:</strong> #{path}</div> + <div class="error"><strong>#{CGI.escapeHTML(error.to_s)}</strong></div> + <div class="load"> + <strong><a href="#{request.uri}">Reload</a></strong> this page. + Go to the <strong><a href="#{request.referer}">referer</a></strong> or the <strong><a href="/">home page</a></strong>. + </div> + <div class="source"> + <?r + extract = error.source_extract.split("\n") + ?> + In file <b>'#{error.hot_file}'</b> #{error.hot_file =~ /\.xhtml$/ ? '(line numbering is aproximate due to template transformation)' : nil}: + <br /><br /> + <?r + extract.each_with_index do |line, idx| + line = sanitize(line) + if 5 == idx + ?> + <div style="background: #eee">#{line}</div> + <?r else ?> + <div>#{line}</div> + <?r + end + end + ?> + </div> + <h2><a href="#" onclick="return toggleVisible(document.getElementById('trace'));">Stack Trace</a></h2> + <div id="trace" style="display: none;"> + <?r error.backtrace.zip(error.source_for_backtrace).each_with_index do |step,step_idx| ?> + <div><a href="#" onclick="return toggleVisible(document.getElementById('trace_#{step_idx}'));">#{sanitize(step.first)}</a></div> + <div class="source" id="trace_#{step_idx}" style="display: none;"> + <?r + extract = step.last.split("\n") + extract.each_with_index do |line, idx| + line = sanitize(line) + if 5 == idx + ?> + <div style="background: #eee">#{line}</div> + <?r else ?> + <div>#{line}</div> + <?r + end + end + ?> + </div> + + + <?r end ?> + </div> + <?r end ?> + + <h2><a href="#" onclick="document.getElementById('request').style.display = 'block'; return false">Request</a></h2> + <div id="request" style="display: none"> + <p><strong>Parameters:</strong> #{request.params.reject{ |k,v| k == :__RELOADED__ }.inspect}</p> + <p><strong>Cookies:</strong> #{request.cookies.inspect}</p> + <p><strong>Headers:</strong><br />#{request.headers.collect { |k, v| "#{k} => #{v}" }.join('<br />')}</p> + </div> + + <h2><a href="#" onclick="document.getElementById('response').style.display = 'block'; return false">Response</a></h2> + <div id="response" style="display: none"> + <p><strong>Headers:</strong> #{request.response_headers.inspect}</p> + <p><strong>Cookies:</strong> #{request.response_cookies.inspect}</p> + </div> + + <h2><a href="#" onclick="document.getElementById('session').style.display = 'block'; return false">Session</a></h2> + <div id="session" style="display: none"> + <p><strong>Values:</strong> #{session.inspect}</p> + </div> + + <br /><br /> + Powered by <a href="http://www.nitrohq.com">Nitro</a> version #{Nitro::Version} +<?r end ?> + </body> +</html> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1><a href="/"> Home</a> > <a href="#@base">System</a> > <a href="#{base}/list">#{"%plural%".humanize}</a> > Edit #{"%name%".humanize} </h1> + <?r if @all ?> + <a href="#{request.uri.gsub(/\/all$/, '')}">Show editable</a> + #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :all => true} + <?r else ?> + <a href="#{request.uri}/all">Show all</a> + #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list"} + <?r end ?> +</SystemPage> +#{form_for(@%name%)} +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1>#{"%plural%".humanize}</h1> + <h2><a href="#{base}/new">New #{"%name%".humanize}</a></h2> + <form action="search"> + Search #{"%plural%".humanize}: <input type="text" name="q" /> <input type="submit" value="Search" /> + </form> + <table> + <?r for obj in @list ?> + <tr> + <td width="100%"><a href="#{base}/edit/#{obj.oid}">#{obj.to_s}</a></td> + <?r if obj.respond_to?(:update_time) ?> + <td nowrap="1">#{obj.update_time.stamp(:db)}</td> + <?r end ?> + <td><a href="#{base}/edit/#{obj.oid}">edit</a></td> + <td><a href="#{base}/delete/#{obj.oid}">del</a></td> + </tr> + <?r end ?> + </table> +</SystemPage> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1><a href="/"> Home</a> > <a href="#@base">System</a> > #{"%plural%".humanize}</h1> + <a href="#{base}/new">New #{"%name%".humanize}</a> + <p> + <form action="#{base}/search"> + Search #{"%plural%".humanize}: <input type="text" name="q" /> <input type="submit" value="Search" /> + </form> + </p> + <table> + <?r for obj in @list ?> + <tr> + <td width="100%"><a href="#{base}/edit/#{obj.oid}">#(obj.to_s)</a></td> + <?r if obj.respond_to?(:update_time) ?> + <td nowrap="1">#{obj.update_time.stamp(:db)}</td> + <?r end ?> + <td><a href="#{base}/edit/#{obj.oid}">edit</a></td> + <td><a href="#{base}/delete/#{obj.oid}" onclick="confirm('Are you sure?')">del</a></td> + </tr> + <?r end ?> + </table> + <div class="pager" if="@pager and @pager.navigation?"> + #{@pager.navigation} + </div> +</SystemPage> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1><a href="/"> Home</a> > <a href="#@base">System</a> > <a href="#{base}/list">#{"%plural%".humanize}</a> > New #{"%name%".humanize}</h1> + <?r if @all ?> + <a href="#{request.uri.gsub(/\/all$/, '')}">Show editable</a> + #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :all => true, :enctype => "multipart/form-data"} + <?r else ?> + <a href="#{request.uri}/all">Show all</a> + #{form_for @obj, :action => "#{base}/save", :cancel => "#{base}/list", :enctype => "multipart/form-data"} + <?r end ?> +</SystemPage> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1><a href="/"> Home</a> > <a href="#@base">System</a> > <a href="#{base}/list">#{"%plural%".humanize}</a> > Search for '#@query'</h1> + <p> + <form action="#{base}/search"> + Search #{"%plural%".humanize}: <input type="text" name="q" /> <input type="submit" value="Search" /> + </form> + </p> + <?r if @list.nil? ?> + <p>Search method is not implemented for this object</p> + <?r else ?> + <table> + <?r for obj in @list ?> + <tr> + <td width="100%"><a href="#{base}/edit/#{obj.oid}">#(obj.to_s)</a></td> + <?r if obj.respond_to?(:update_time) ?> + <td nowrap="1">#{obj.update_time.stamp(:db)}</td> + <?r end ?> + <td><a href="#{base}/edit/#{obj.oid}">edit</a></td> + <td><a href="#{base}/delete/#{obj.oid}">del</a></td> + </tr> + <?r end ?> + </table> + <div class="pager" if="@pager and @pager.navigation?"> + #{@pager.navigation} + </div> + <?r end ?> +</SystemPage> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1>View %name%</h1> + <h2><a href="#{base}/list">List of %plural%</a></h2> + <code> + #{@obj.to_yaml} + </code> +</SystemPage> +<strong>Access denied</strong> +<SystemPage> + <?r base = "#{@base}/%base%" ?> + <h1><a href='/'>Home</a> > System</h1> + + <h2>Og managed classes</h2> + + <table> + <tr> + <th>Class</th> + <th>Count</th> + <th colspan="2">Cleanup</th> + <th>Properties</th> + </tr> + <?r for c in @classes ?> + <tr> + <td><a href="#@base/#{Scaffolding.class_to_path(c).plural}/list">#{c.name}</a></td> + <td>#{c.count}</td> + <td><a href="delete_all/#{c.name}" onclick="return confirm('Delete all instances?')">delete</a></td> + <td><a href="destroy/#{c.name}" onclick="return confirm('Drop the schema?')">destroy</a></td> + <td width="100%">#{c.properties.values.join(', ')}</td> + </tr> + <?r end ?> + </table> + + <h2>System configuration</h2> + + <table width="100%"> + <tr> + <th>Name</th> + <th>Value</th> + <th>Type</th> + <th>Description</th> + </tr> + <?r for s in @settings ?> + <tr> + <td>#{s.owner}.<strong>#{s.name}</strong></td> + <td>#{s.value.inspect}</td> + <td>#{s.type}</td> + <td>#{s.options[:doc]}</td> + </tr> + <?r end ?> + </table> +</SystemPage> + +<b><?r $include1 = true ?></b> +<b><?r $include2 = true ?></b> +<html> + <b>Test</b> + +<?r @tflag = true ?> + +<render href="blog/inc1" /> +<render href='blog/inc2' /> + +</html> +<html>hello</html> +Hello #{username} + +how do you feel? + +Here is your <b>Token</b>: #{token} +<Page title="Questions and Tips by Tags"> + <div id="left"> + <?r if @tags ?> + <h1>Questions with Tags: #{@tags.join(" ")}</h1> + + <?r if @questions && @questions.size > 0 ?> + <?r if @qtags ?> + Too many results for that Tag, please reduce the number by using one of the following Tags: + #{cloud_of(@qtags)} + <?r end ?> + <div class="results"> + <?r @questions.each do |q| ?> + <h2><a href="/question/#{q.oid}">#{q.question}</a></h2> + <p> + <?r excerpt = excerpt_with_words(q.text, @tags) ?> + #{excerpt} + </p> + <p style="float:right;">#{q.answers.size.to_i} answers</p> + <?r end ?> + </div> + <div class="pager"> + #{@qpager.navigation} + </div> + <?r else ?> + <div class="results_none"> + <h2>no question with this/these tag(s) found</h2> + <p><a href="/ask">Ask a question here.</a></p> + </div> + <?r end ?> + + <?r if @tips && @tips.size > 0 ?> + <h1>Tips with Tags: #{@tags.join(" ")}</h1> + <?r if @ttags ?> + Too many results for that Tag, please reduce the number by using one of the following Tags: + #{cloud_of(@ttags)} + <?r end ?> + <div class="results"> + <?r @tips.each do |t| ?> + <h2><a href="/tip/#{t.oid}">#{t.title}</a></h2> + <p> + <?r excerpt = excerpt_with_words(t.text, @tags) ?> + #{excerpt} + </p> + <?r end ?> + </div> + <div class="pager"> + #{@tpager.navigation} + </div> + <?r end ?> + + <?r if @tutorials && @tutorials.size > 0 ?> + <h1>Tutorials with Tags: #{@tags.join(" ")}</h1> + <?r if @tuttags ?> + Too many results for that Tag, please reduce the number by using one of the following Tags: + #{cloud_of(@tuttags)} + <?r end ?> + <div class="results"> + <?r @tutorials.each do |t| ?> + <h2><a href="/tutorial/#{t.oid}">#{t.title}</a></h2> + <p> + <?r excerpt = excerpt_with_words(t.text, @tags) ?> + #{excerpt} + </p> + <?r end ?> + </div> + <div class="pager"> + #{@tpager.navigation} + </div> + <?r end ?> + + + <?r else ?> + <div class="cloud"> + <?r + sum = all_tags.inject(0) { |sum, t| sum + t.popularity.to_i } + ?> + <?r all_tags.each do |t| ?> + <a href="/tags/#{t.name}" style="font-size:#{(1+((t.popularity.to_i/sum.to_f)*2)).to_s[0..3]}em;">#{t.name}</a> + <?r end ?> + </div> <!-- #cloud --> + <?r end ?> + </div> <!-- #left --> + + <render href="/right" /> +</Page> + +<!-- Copyright © 2006 Kashia Buch (kashia@vfemail.net), Fabian Buch (fabian@fabian-buch.de). All rights reserved. --> |