Author: fmeschbe
Date: Fri Dec 14 14:19:03 2012
New Revision: 1421880

URL: http://svn.apache.org/viewvc?rev=1421880&view=rev
Log:
FELIX-3816 Add site libraries and templates (copied from Sling and adapted)

Added:
    felix/site/trunk/cgi-bin/
    felix/site/trunk/readme.txt
    felix/site/trunk/templates/downloads.html
    felix/site/trunk/templates/sidenav.mdtext
Modified:
    felix/site/trunk/lib/path.pm
    felix/site/trunk/lib/view.pm
    felix/site/trunk/templates/single_narrative.html
    felix/site/trunk/templates/skeleton.html

Modified: felix/site/trunk/lib/path.pm
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/lib/path.pm?rev=1421880&r1=1421879&r2=1421880&view=diff
==============================================================================
--- felix/site/trunk/lib/path.pm (original)
+++ felix/site/trunk/lib/path.pm Fri Dec 14 14:19:03 2012
@@ -1,19 +1,19 @@
 package path;
+use ASF::Value;
 
 # taken from django's url.py
 
 our @patterns = (
        [qr!\.mdtext$!, single_narrative => { template => 
"single_narrative.html" }],
-
-       [qr!/sitemap\.html$!, sitemap => { headers => { title => "Sitemap" }} ],
-
+       [qr!^/sitemap\.html$!, sitemap => { headers => { title => "Sling 
Sitemap" }}],
+       [qr!^/downloads\.list$!, downloads => { template => "downloads.html" }],
 ) ;
 
 # for specifying interdependencies between files
 
-our %dependencies = (
-    "/sitemap.html" => [ grep s!^content!!, glob "content/*.mdtext" ],
-);
+#our %dependencies = (
+#    "/sling/sitemap.html" => [ grep s!^content!!, glob 
"content/sling/*.mdtext" ],
+#);
 
 1;
 

Modified: felix/site/trunk/lib/view.pm
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/lib/view.pm?rev=1421880&r1=1421879&r2=1421880&view=diff
==============================================================================
--- felix/site/trunk/lib/view.pm (original)
+++ felix/site/trunk/lib/view.pm Fri Dec 14 14:19:03 2012
@@ -1,8 +1,401 @@
 package view;
-use base 'ASF::View'; # see 
https://svn.apache.org/repos/infra/websites/cms/build/lib/ASF/View.pm
+
+#
+# BUILD CONSTRAINT:  all views must return $content, $extension.
+# additional return values (as seen below) are optional.  However,
+# careful use of symlinks and dependency management in path.pm can
+# resolve most issues with this constraint.
+#
+
+use strict;
+use warnings;
+use Dotiac::DTL qw/Template/;
+use Dotiac::DTL::Addon::markup;
+use ASF::Util qw/read_text_file shuffle/;
+use File::Temp qw/tempfile/;
+use LWP::Simple;
+use SVN::Client;
+use File::Find;
+
+push @Dotiac::DTL::TEMPLATE_DIRS, "templates";
+
+# This is most widely used view.  It takes a
+# 'template' argument and a 'path' argument.
+# Assuming the path ends in foo.mdtext, any files
+# like foo/bar.mdtext will be parsed and
+# passed to the template in the "bar" (hash)
+# variable.
+
+sub single_narrative {
+    my %args = @_;
+    my $file = "content$args{path}";
+    my $template = $args{template};
+    $args{path} =~ s/\.mdtext$/\.html/;
+    $args{breadcrumbs} = breadcrumbs($args{path});
+    $args{svninfo} = svninfo($file);
+
+    read_text_file $file, \%args;
+
+    $args{refs} = {};
+
+    # ensure loading child pages
+    my $page_path = $file;
+    $page_path =~ s/\.[^.]+$//;
+    if (-d $page_path) {
+        $args{children} = {};
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{children}->{$1} = read_ref_page_data($f);
+            $args{refs}->{$1} = $args{children}->{$1};
+        }
+    }
+
+    # ensure loading pages referenced with ref.XXX.*    
+    while( $args{content} =~ /refs\.([^.]+)\./g ) {
+        my $label = $1;
+        if(!$args{refs}->{$label}) {
+            my $refPagePath;
+            find(sub {
+                if(!$refPagePath && $_ eq "$label.mdtext") {
+                    $refPagePath = $File::Find::name;
+                }
+            }, "content");
+            
+            if($refPagePath) {
+                $args{refs}->{$label} = read_ref_page_data($refPagePath);
+            }
+        }
+    }
+
+#      $args{sidenav} = {};
+#      read_text_file "templates/sidenav.mdtext", $args{sidenav} ;
+
+#      select STDOUT ;
+#      $| = 1 ;
+#      for my $ke (keys %args) {
+#              print STDOUT "$ke \n";
+#      }
+
+    # use the content as a template if it contains Django templates
+    if ($args{content} =~ /\{[{%][^}]*[%}]\}/) {
+        print STDOUT "Applying $args{path} as a Django template\n";
+        $args{content} = Dotiac::DTL->new(\$args{content})->render(\%args);
+    }
+    
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+# The specially crafted download page
+# Input is a list of artifacts formatted as:
+#
+#   <title>|<id>|<version>[|<qualifier>]
+#
+# Special handling if title is "sling": This denotes the
+# version of the Sling Launchpad distribution whie is
+# rendered specially: The id is actually the launchpad
+# distribution version
+sub downloads {
+       my %args = @_;  
+    my $file = "content$args{path}";
+    my $template = $args{template};
+    $args{path} =~ s/\.list$/\.html/;
+    $args{breadcrumbs} = breadcrumbs($args{path});
+    $args{svninfo} = svninfo($file);
+       
+    read_text_file $file, \%args;
+
+    my $result = "|Artifact | Version | Binary | Source|\n|--|--|--|--|\n";
+    my $maven = "|Artifact | Version | Binary | Source|\n|--|--|--|--|\n";
+    my $launchpad = "| Artifact | Version | Provides | Package |\n|-|-|-|-|\n";
+
+    my @lines = split( /\n/, $args{content} );
+    @lines = sort @lines;
+    for my $line (@lines) {
+       next if (!$line || $line =~ /^\s*#/);
+       
+       my ($title, $artifact, $version, $classifier, $ext) = split(/\|/, 
$line);
+       $ext = "jar" unless ($ext);
+       $classifier = ($classifier) ? "-$classifier" : "";
+       
+       if ($title eq "sling") {
+               
+            $launchpad .="| Sling Standalone Application | $artifact | A 
self-runnable Sling jar. | " . 
downloadLink("org.apache.sling.launchpad-$artifact-standalone.jar"). "|\n";
+            $launchpad .="| Sling Web Application | $artifact | A ready-to run 
Sling webapp as a war file. | " . 
downloadLink("org.apache.sling.launchpad-$artifact.war"). "|\n";
+            $launchpad .="| Sling Source Package | $artifact | The released 
Sling source code. | " . 
downloadLink("sling-$artifact-source-release.tar.gz")."<br/>" . 
downloadLink("sling-$artifact-source-release.zip")." |\n";
+            
+       } else {
+               
+               my $target = \$result;
+               my $artifactLabel;
+               if ($ext eq "war") {
+                $artifactLabel = "Web Application";
+               } elsif ($classifier eq "-app") {
+                $artifactLabel = "Java Application";
+               } elsif ($artifact =~/^maven-/) {
+                       $target = \$maven;
+                $artifactLabel = "Maven Plugin";
+               } else {
+                       $artifactLabel = "Bundle";
+               }
+               
+               ${$target} .= "|$title|$version|" . 
downloadLink("$artifact-$version$classifier.$ext", $artifactLabel) . " | " . 
downloadLink("$artifact-$version-source-release.zip", "Source ZIP") . "|\n";
+       }
+    }
+
+    $args{launchpad} = $launchpad;
+    $args{content} = $result;
+    $args{maven} = $maven;
+    
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+# Has the same behavior as the above for foo/bar.txt
+# files, parsing them into a bar variable for the template.
+# Otherwise presumes the template is the path.
+
+sub news_page {
+    my %args = @_;
+    my $template = "content$args{path}";
+    $args{breadcrumbs} = breadcrumbs($args{path});
+
+    my $page_path = $template;
+    $page_path =~ s/\.[^.]+$//;
+    if (-d $page_path) {
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{$1} = {};
+            read_text_file $f, $args{$1};
+        }
+    }
+
+    for ((fetch_doap_url_list())[0..2]) {
+        push @{$args{projects}}, parse_doap($_);
+    }
+
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+# Recursive Sitemap generation
+# Taken from: http://svn.apache.org/repos/asf/chemistry/site/trunk/lib/view.pm
+sub sitemap {
+   my %args = @_;
+   my $template = "content$args{path}";
+   my $file = $template;
+
+   # Find the list of files
+   my ($dir) = ($file =~ /^(.*)\/.*?/);
+   my $entries = {};
+   sitemapFind($dir, $entries);
+
+   my $sitemap = "<ul>\n";
+   $sitemap = sitemapRender($sitemap, $entries, "");
+   $sitemap .= "</ul>\n";
+   $args{sitemap} = $sitemap;
+   
+   return Dotiac::DTL::Template($template)->render(\%args), html => \%args;   
+}
+
+sub sitemapFind {
+   my ($dir, $entries) = @_;
+   $entries->{"title"} = "";
+   $entries->{"entries"} = {};
+   my %entries = ( "title"=>"", "entries"=>{} );
+
+   foreach my $item (<$dir/*>) {
+      my ($rel) = ($item =~ /^.*\/(.*?)$/);
+
+      if(-d $item) {
+        # Only consider folders which have content page by them
+        if(-f "$item.mdtext") {
+            $rel .= ".mdtext" ;
+            $entries->{"entries"}->{$rel} = {};
+            sitemapFind($item, $entries->{"entries"}->{$rel});
+        }
+      } elsif($item =~ /\.(html|mdtext)$/) {
+         # Grab the title
+         my $title = $rel;
+         if($rel =~ /\.mdtext$/) {
+             my %args;
+             read_text_file $item, \%args;
+             $title = $args{"headers"}->{"title"};
+         } elsif ($rel =~ /\.png$/ || $rel =~ /\.jpg$/) {
+            next;
+         } else {
+             open F, "<$item";
+             my $file = "";
+             while(my $line = <F>) {
+                $file .= $line;
+             }
+             close F;
+
+             if($file =~ /block\s+title\s*\%\}(.*?)\{/) {
+                $title = $1;
+             } elsif($file =~ /title\>(.*?)\</) {
+                $title = $1;
+             }
+         }
+
+         # Process
+         if($rel =~ /^index\.(html|mdtext)$/) {
+            $entries->{"title"} = $title;
+         } else {
+            $entries->{entries}->{$rel}->{title} = $title;
+         }
+      }
+   }
+   return %entries;
+}
+
+sub sitemapRender {
+   my ($sitemap, $dir, $path) = @_;
+   my %entries = %{$dir->{"entries"}};
+
+   foreach my $e (sort keys %entries) {
+      my $fn = $e;
+      $fn =~ s/\.mdtext/.html/;
+      if($fn eq "images/" or $fn eq "resources/") {
+         next;
+      }
+
+      my $title = $entries{$e}->{title};
+      unless($title) {
+         $title = $e;
+      }
+
+      $sitemap .= "<li><a href=\"$path/$fn\">".$title."</a>";
+      if($entries{$e}->{entries}) {
+         my $parent = $e;
+         $parent =~ s/\.mdtext$//;
+         $sitemap .= "<ul>\n";
+         $sitemap = sitemapRender($sitemap, $entries{$e}, "$path/$parent");
+         $sitemap .= "</ul>\n";
+      }
+      $sitemap .= "</li>\n";
+   }
+   return $sitemap;
+}
+
+
+
+sub exports {
+    my %args = @_;
+    my $template = "content$args{path}";
+    $args{breadcrumbs} = breadcrumbs($args{path});
+
+    my $page_path = $template;
+    $page_path =~ s/\.[^.]+$/.page/;
+    if (-d $page_path) {
+        for my $f (grep -f, glob "$page_path/*.mdtext") {
+            $f =~ m!/([^/]+)\.mdtext$! or die "Bad filename: $f\n";
+            $args{$1} = {};
+            read_text_file $f, $args{$1};
+        }
+        $args{table} = `xsltproc $page_path/eccnmatrix.xsl 
$page_path/eccnmatrix.xml`;
+
+    }
+
+    return Dotiac::DTL::Template($template)->render(\%args), html => \%args;
+}
+
+sub parse_doap {
+    my $url = shift;
+    my $doap = get $url or die "Can't get $url: $!\n";
+    my ($fh, $filename) = tempfile("XXXXXX");
+    print $fh $doap;
+    close $fh;
+    my $result = eval `xsltproc lib/doap2perl.xsl $filename`;
+    unlink $filename;
+    return $result;
+}
+
+sub fetch_doap_url_list {
+    my $xml = get 
"http://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/files.xml";
+        or die "Can't get doap file list: $!\n";
+    my ($fh, $filename) = tempfile("XXXXXX");
+    print $fh $xml;
+    close $fh;
+    chomp(my @urls = grep /^http/, `xsltproc lib/list2urls.xsl $filename`);
+    unlink $filename;
+    shuffle \@urls;
+    return @urls;
+}
 
 1;
 
+
+# Reads data of a referenced page
+sub read_ref_page_data {
+    my $file = shift;
+    my $out = {};
+    
+    read_text_file $file, $out;
+    $out->{path} = "$file";
+    $out->{path} =~ s/content(\/.*)\.mdtext/$1.html/;
+    
+    return $out;
+}
+
+sub downloadLink {
+       my ($artifact, $label) = @_;
+    my $dp = "http://www.apache.org/dist";;
+    $label = $artifact unless ($label);
+    return "[$label]([preferred]/sling/$artifact) 
([asc]($dp/sling/$artifact.asc), [md5]($dp/sling/$artifact.md5))";
+}
+
+sub breadcrumbs {
+    my @path = split m!/!, shift;
+    pop @path;
+    my @rv;
+    my $relpath = "";
+    my $ext;
+    my $sep = "/";
+    for (@path) {
+        $relpath .= "$sep$_";
+        if ($_) {
+            $_ = "";
+            my $datafile = "content$relpath.mdtext";
+            my %data;
+            if (-f $datafile) {
+                read_text_file $datafile, \%data;
+                $ext = ".html";
+                $sep = "/";
+                my $title = ${data{headers}}{title};
+                if ($title) {
+                    $_ = $title;
+                }
+            }
+        } else {
+            $_ = "Home";
+            $ext = "";
+            $sep = "";
+        }
+        push @rv, qq(<a href="$relpath$ext">$_</a>) if $_;
+    }
+    return join "&nbsp;&raquo&nbsp;", @rv;
+}
+
+
+# Returns information on the last change to the file
+# as a reference to a has with three properties
+# - rev The SVN Revision
+# - date The last modification date (seconds since the epoch)
+# - author of the revision
+sub svninfo {
+  my $source = $_[0];
+  my %info;
+  my $receiver = sub {
+    my $svninfo = $_[1];
+    $info{rev} = $svninfo->last_changed_rev;
+    $info{date} = $svninfo->last_changed_date / 1000000;
+    $info{author} = $svninfo->last_changed_author;
+  };
+
+  my $ctx = SVN::Client->new;
+  $ctx->info($source, undef, undef, $receiver, 0);
+  return \%info;
+}
+
+
 =head1 LICENSE
 
            Licensed to the Apache Software Foundation (ASF) under one

Added: felix/site/trunk/readme.txt
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/readme.txt?rev=1421880&view=auto
==============================================================================
--- felix/site/trunk/readme.txt (added)
+++ felix/site/trunk/readme.txt Fri Dec 14 14:19:03 2012
@@ -0,0 +1,69 @@
+Working on the conversion of the Felix website to the ASF CMS,
+see https://issues.apache.org/jira/browse/FELIX-3816
+
+Notes on pages:
+
+  * Start the file with a Title: line to define the page
+    title and the first H1 tag.
+
+  * The last modification information from SVN (revision,
+    committer, and date/time) is automatically added when
+    the page is rendered
+
+  * Excerpts can be added to a page using the Excerpt
+    metadata.
+
+  * Metadata from child pages can be referred to in the
+    content with the Django variable reference notation
+    using the child page name (without extension) as
+    its container; e.g. for the child page named
+    "childpage":
+          {{ children.childpage.headers.excerpt }}
+          {{ children.childpage.headers.title }}
+
+  * Content Pages can contain Django templates of the
+    form {{...}} and {%...%}. If so, the page content
+    is evaluated as a Django template before running
+    it through the page template.
+
+  * Any page in the site can be referenced with refs.pagename
+    returning properties:
+       .path - the absolute path of the page on the site
+       .headers - page headers (e.g. .title, .excerpt)
+       .content - the raw page content
+    All pages in the children namespace are also available in
+    the refs namespace
+    
+
+Some usefull hints:
+
+  * Printing title of another page "handler":
+       {{ refs.handler.headers.title }}
+
+  * Printing excerpt of another page "handler":
+       {{ refs.handler.headers.excerpt }}
+  
+  * Linking to another page "handler":
+       ({{ refs.handler.path }})
+       
+  * Printing title as a link to another page "handler":
+       [{{ refs.handler.headers.title }}]({{ refs.handler.path }})
+       
+  * Printing excerpt as a link to another page "handler":
+       [{{ refs.handler.headers.excerpt }}]({{ refs.handler.path }})
+       
+  * Print a bullet pointed child page list:
+       {% for label, page in children %}* [{{ page.headers.title }}]({{ 
page.path }})
+       {% endfor %}
+    Note: It is important to have the first part as a single line,
+    otherwise the Django/Markdown combo will create list for each
+    entry.
+  
+  * Code Highlighting works by indenting code by four blanks.
+    To indicate the type of highlighting preced the code style text with
+    either :::<lexer> to get high lighted code using the given <lexer>
+    or #!<lexer> to get high lighted code with line numbers using the
+    given <lexer>.
+    See http://www.apache.org/dev/cmsref.html#code-hilighter for main info
+    See http://pygments.org/docs/lexers/ for supported lexers
+

Added: felix/site/trunk/templates/downloads.html
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/templates/downloads.html?rev=1421880&view=auto
==============================================================================
--- felix/site/trunk/templates/downloads.html (added)
+++ felix/site/trunk/templates/downloads.html Fri Dec 14 14:19:03 2012
@@ -0,0 +1,84 @@
+{% extends "skeleton.html" %}
+{% block title %}Downloads{% endblock %}
+{% block content %}
+<p>
+To get the latest development release of Apache Sling, you can check out
+the <a href="/project-information.html#source-repository">Source Code</a>
+and <a 
href="/documentation/development/getting-and-building-sling.html">Getting and 
Building Sling</a>
+yourself. Otherwise, the releases below are available for download. To
+install, just download and extract. These
+<a href="http://www.apache.org/dist/sling/KEYS";>KEYS</a> can be used to verify 
the
+release archive.
+</p>
+
+<p>
+All Apache Sling products are distributed under the terms of The Apache
+Software License (version 2.0). See our
+<a href="/project-information/project-license.html">license</a>, or the 
LICENSE file included
+in each distribution.
+</p>
+
+<div class="toc">
+<ul>
+<li><a href="#mirrors">Mirrors</a></li>
+<li><a href="#application">Sling Application</a></li>
+<li><a href="#components">Sling Components</a></li>
+<li><a href="#maven">Maven Plugins</a></li>
+</ul>
+</div>
+
+<h2 id="mirrors">Mirrors</h2>
+
+<p>
+Use the links below to download binary or source distributions of Apache
+Sling from one of our mirrors.
+</p>
+
+<p>
+You are currently using <b>[preferred]</b>. If you encounter a problem with
+this mirror, please select another mirror. If all mirrors are failing,
+there are backup mirrors (at the end of the mirrors list) that should be
+available. If the mirror displayed above is labeled <i>preferred</i>, then
+please reload this page by <a href="/downloads.cgi">clicking here</a>.
+</p>
+
+<form action="[location]" method="get" id="SelectMirror">
+<p>Other mirrors: </p>
+<select name="Preferred">
+[if-any http]
+[for http]<option value="[http]">[http]</option>[end]
+[end]
+[if-any ftp]
+[for ftp]<option value="[ftp]">[ftp]</option>[end]
+[end]
+[if-any backup]
+[for backup]<option value="[backup]">[backup] (backup)</option>[end]
+[end]
+</select>
+<input type="submit" value="Change"></input>
+</form>
+
+<h2 id="application">Sling Application</h2>
+
+{{ launchpad|markdown }}
+
+<p>
+If you want to experiment with bleeding edge code,
+<a href="/documentation/development/getting-and-building-sling.html">building 
Sling yourself</a>
+is not that hard.
+</p>
+
+<p>
+If you are looking for previous releases of Apache Sling, have a look in
+the <a href="http://archive.apache.org/dist/sling/";>archives</a>. For previous
+incubator releases of Apache Sling, have a look in the
+<a href="http://archive.apache.org/dist/incubator/sling/";>Incubator 
archives</a>.
+</p>
+
+<h2 id="components">Sling Components</h2>
+{{ content|markdown }}
+
+<h2 id="maven">Maven Plugins</h2>
+{{ maven|markdown }}
+
+{% endblock %}

Added: felix/site/trunk/templates/sidenav.mdtext
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/templates/sidenav.mdtext?rev=1421880&view=auto
==============================================================================
--- felix/site/trunk/templates/sidenav.mdtext (added)
+++ felix/site/trunk/templates/sidenav.mdtext Fri Dec 14 14:19:03 2012
@@ -0,0 +1,20 @@
+[news](/news.html)    
+[license](/licenses.html)    
+[downloads](/downloads.cgi)    
+[documentation](/documentation.html)    
+[mailing lists](/mailinglists.html)    
+[contributing](/documentation/community/contributing.html)    
+[site map](/sitemap.html)    
+[asf](http://www.apache.org/)    
+[security](http://www.apache.org/security/)    
+[sponsorship](http://www.apache.org/foundation/sponsorship.html)    
+[sponsors](http://www.apache.org/foundation/thanks.html)    
+    
+<iframe
+    src="http://www.apache.org/ads/button.html";
+    style="border-width:0; float: left"
+    frameborder="0"
+    scrolling="no"
+    width="135"
+    height="135">
+</iframe>

Modified: felix/site/trunk/templates/single_narrative.html
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/templates/single_narrative.html?rev=1421880&r1=1421879&r2=1421880&view=diff
==============================================================================
--- felix/site/trunk/templates/single_narrative.html (original)
+++ felix/site/trunk/templates/single_narrative.html Fri Dec 14 14:19:03 2012
@@ -1 +1,3 @@
 {% extends "skeleton.html" %}
+{% block title %}{{ headers.title }}{% endblock %}
+{% block content %}{{ content|markdown }}{% endblock %}

Modified: felix/site/trunk/templates/skeleton.html
URL: 
http://svn.apache.org/viewvc/felix/site/trunk/templates/skeleton.html?rev=1421880&r1=1421879&r2=1421880&view=diff
==============================================================================
--- felix/site/trunk/templates/skeleton.html (original)
+++ felix/site/trunk/templates/skeleton.html Fri Dec 14 14:19:03 2012
@@ -1,54 +1,61 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
   <head>
-    <title>{% block title %}{{ headers.title }}{% endblock %}</title>
-
+    <title>Apache Felix - {% block title %}{% endblock %}</title>
+    <link rel="icon" href="/res/favicon.ico">
+    <link rel="stylesheet" href="/res/site.css" type="text/css" media="all">
+    <link rel="stylesheet" href="/res/codehilite.css" type="text/css" 
media="all">
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
-    <meta property="og:image" 
content="http://www.apache.org/images/asf_logo.gif"; />
-
-    <link rel="stylesheet" type="text/css" media="screen" 
href="http://www.apache.org/css/style.css";>
-    <link rel="stylesheet" type="text/css" media="screen" 
href="http://www.apache.org/css/code.css";>
-
-    {% if headers.atom %}
-      <link rel="alternate" href="{{ headers.atom.url }}"
-            type="application/atom+xml" title="{{ headers.atom.title }}" />
-    {% endif %}
-
-    {% if headers.base %}<base href="{{ headers.base }}" />{% endif %}
-    {% if headers.notice %}<!-- {{ headers.notice }} -->{% endif %}
   </head>
-
   <body>
-    <div id="page" class="container_16">
-      <div id="header" class="grid_8">
-        <img src="http://www.apache.org/images/feather-small.gif"; alt="The 
Apache Software Foundation">
-        <h1>The Apache Software Foundation</h1>
-        <h2>{% block tagline %}{{ headers.title }}{% endblock %}</h2>
+    <div class="title">
+      <div class="logo">
+        <a href="http://felix.apache.org/";>
+          <img border="0" alt="Apache Felix" src="/res/logo.png">
+        </a>
       </div>
-      <div id="nav" class="grid_8">
-        <ul>
-          <!-- <li><a href="/" title="Welcome!">Home</a></li> -->
-          <li><a href="http://www.apache.org/foundation/"; title="The 
Foundation">Foundation</a></li>
-          <li><a href="http://projects.apache.org"; title="The 
Projects">Projects</a></li>
-          <li><a href="http://people.apache.org"; title="The 
People">People</a></li>
-          <li><a href="http://www.apache.org/foundation/getinvolved.html"; 
title="Get Involved">Get Involved</a></li>
-          <li><a href="http://www.apache.org/dyn/closer.cgi"; 
title="Download">Download</a></li>
-          <li><a href="http://www.apache.org/foundation/sponsorship.html"; 
title="Support Apache">Support Apache</a></li>
-        </ul>
-        <p>{{ breadcrumbs|safe }}</p>
-        <form name="search" id="search" action="http://www.google.com/search"; 
method="get">
-          <input value="*.apache.org" name="sitesearch" type="hidden"/>
-          <input type="text" name="q" id="query">
-          <input type="submit" id="submit" value="Search">
-        </form>
+      <div class="header">
+        <a href="http://www.apache.org/";>
+          <img border="0" alt="Apache" src="/res/apache.png">
+        </a>
       </div>
-      <div class="clear"></div>
-      {% block content %}<div id="content" class="grid_16"><div 
class="section-content">{{ content|markdown }}</div></div>{% endblock %}
-      <div class="clear"></div>
     </div>
-
-    <div id="copyright" class="container_16">
-      <p>Copyright &#169; 2011 The Apache Software Foundation, Licensed under 
the <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache License, 
Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The 
Apache Software Foundation.</p>
+    
+    <div class="menu"> 
+      {% filter markdown %}{% include "sidenav.mdtext" %}{% endfilter %}
+    </div>
+    
+    <div class="main">
+      <div class="breadcrump" style="font-size: 80%;">
+        {{ breadcrumbs|safe }}
+      </div>
+      <h1>{% block title %}{% endblock %}</h1>
+      {% block content %}{% endblock %}
+      <div class="timestamp" style="margin-top: 30px; font-size: 80%; 
text-align: right;">
+        Rev. {{ svninfo.rev }} by {{ svninfo.author|safe }} on {{ 
svninfo.date|date:"D, j M Y H:i:s O" }}
+      </div>
+      <div class="trademarkFooter"> 
+        Apache Felix, Felix, Apache, the Apache feather logo, and the Apache 
Felix project
+        logo are trademarks of The Apache Software Foundation. All other marks 
mentioned
+        may be trademarks or registered trademarks of their respective owners.
+      </div>
     </div>
   </body>
 </html>


Reply via email to