Author: arkurth Date: Mon May 7 18:59:33 2012 New Revision: 1335193 URL: http://svn.apache.org/viewvc?rev=1335193&view=rev Log: VCL-583 Originally put CMS files in wrong location. Moved up to vcl/site.
Added: incubator/vcl/site/ incubator/vcl/site/branches/ incubator/vcl/site/trunk/ incubator/vcl/site/trunk/cgi-bin/ incubator/vcl/site/trunk/content/ incubator/vcl/site/trunk/content/vcl/ incubator/vcl/site/trunk/content/vcl/css/ incubator/vcl/site/trunk/content/vcl/css/vcl.css incubator/vcl/site/trunk/content/vcl/index.mdtext incubator/vcl/site/trunk/lib/ incubator/vcl/site/trunk/lib/path.pm incubator/vcl/site/trunk/lib/view.pm incubator/vcl/site/trunk/templates/ incubator/vcl/site/trunk/templates/sidenav.mdtext incubator/vcl/site/trunk/templates/single_narrative.html incubator/vcl/site/trunk/templates/skeleton.html Removed: incubator/vcl/trunk/site/ Added: incubator/vcl/site/trunk/content/vcl/css/vcl.css URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/content/vcl/css/vcl.css?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/content/vcl/css/vcl.css (added) +++ incubator/vcl/site/trunk/content/vcl/css/vcl.css Mon May 7 18:59:33 2012 @@ -0,0 +1,33 @@ +body { + background-color: white; + color: black; + font-family: "New Century Schoolbook", serif; + font-size:13pt; +} + +a,h1,h2,h3,h4,h5,h6 { + color: #000066; +} + +#content h1,h2,h3,h4,h5,h6 { + border-bottom: solid #990000 1px; + font-family: "Helvetica Narrow", Arial, sans-serif; + font-weight:normal; +} + +#navigation { + font-size:80%; +} + +#navigation { + float:right; + color:#333333; + background-color: #EEE; + border: solid #DDD 1px; + padding: 1em; +} + +#footer { + font-size:80%; + color:#666666; +} Added: incubator/vcl/site/trunk/content/vcl/index.mdtext URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/content/vcl/index.mdtext?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/content/vcl/index.mdtext (added) +++ incubator/vcl/site/trunk/content/vcl/index.mdtext Mon May 7 18:59:33 2012 @@ -0,0 +1 @@ +Title: Welcome to Apache VCL \ No newline at end of file Added: incubator/vcl/site/trunk/lib/path.pm URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/lib/path.pm?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/lib/path.pm (added) +++ incubator/vcl/site/trunk/lib/path.pm Mon May 7 18:59:33 2012 @@ -0,0 +1,40 @@ +package path; +use ASF::Value; + +# taken from django's url.py + +our @patterns = ( + [qr!\.mdtext$!, single_narrative => { template => "single_narrative.html" }], + +# [qr!^/vcl/sitemap\.html$!, sitemap => { headers => { title => "Apache VCL Sitemap" }} ], + +) ; + +# for specifying interdependencies between files + +#our %dependencies = ( +# "/vcl/sitemap.html" => [ grep s!^content!!, glob "content/vcl/*.mdtext" ], +#); + +1; + +=head1 LICENSE + + 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. + + Added: incubator/vcl/site/trunk/lib/view.pm URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/lib/view.pm?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/lib/view.pm (added) +++ incubator/vcl/site/trunk/lib/view.pm Mon May 7 18:59:33 2012 @@ -0,0 +1,201 @@ +package view; + +# +# 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; + +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.page/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}); + + read_text_file $file, \%args; + + my $page_path = $file; + $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{sidenav} = {}; +# read_text_file "templates/sidenav.mdtext", $args{sidenav} ; + +# select STDOUT ; +# $| = 1 ; +# for my $ke (keys %args) { +# print STDOUT "$ke \n"; +# } + + return Dotiac::DTL::Template($template)->render(\%args), html => \%args; +} + +# Has the same behavior as the above for foo.page/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/\.[^.]+$/.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}; + } + } + + for ((fetch_doap_url_list())[0..2]) { + push @{$args{projects}}, parse_doap($_); + } + + return Dotiac::DTL::Template($template)->render(\%args), html => \%args; +} + +sub sitemap { + my %args = @_; + my $template = "content$args{path}"; + $args{breadcrumbs} .= breadcrumbs($args{path}); + my $dir = $template; + $dir =~ s!/[^/]+$!!; + opendir my $dh, $dir or die "Can't opendir $dir: $!\n"; + my %data; + for (map "$dir/$_", grep $_ ne "." && $_ ne ".." && $_ ne ".svn", readdir $dh) { + if (-f and /\.mdtext$/) { + my $file = $_; + $file =~ s/^content//; + no warnings 'once'; + for my $p (@path::patterns) { + my ($re, $method, $args) = @$p; + next unless $file =~ $re; + my $s = view->can($method) or die "Can't locate method: $method\n"; + my ($content, $ext, $vars) = $s->(path => $file, %$args); + $file =~ s/\.mdtext$/.$ext/; + $data{$file} = $vars; + last; + } + } + } + + my $content = ""; + + for (sort keys %data) { + $content .= "- [$data{$_}->{headers}->{title}]($_)\n"; + for my $hdr (grep /^#/, split "\n", $data{$_}->{content}) { + $hdr =~ /^(#+)\s+([^#]+)?\s+\1\s+\{#([^}]+)\}$/ or next; + my $level = length $1; + $level *= 4; + $content .= " " x $level; + $content .= "- [$2]($_#$3)\n"; + } + } + $args{content} = $content; + return Dotiac::DTL::Template($template)->render(\%args), html => \%args; +} + +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; + +sub breadcrumbs { + my @path = split m!/!, shift; + pop @path; + my @rv; + my $relpath = ""; + for (@path) { + $relpath .= "$_/"; + $_ ||= "Home"; + push @rv, qq(<a href="$relpath">\u$_</a>); + } + return join " » ", @rv; +} + + +=head1 LICENSE + + 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. Added: incubator/vcl/site/trunk/templates/sidenav.mdtext URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/templates/sidenav.mdtext?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/templates/sidenav.mdtext (added) +++ incubator/vcl/site/trunk/templates/sidenav.mdtext Mon May 7 18:59:33 2012 @@ -0,0 +1,6 @@ +# ASF links + - [Apache Software Foundation](http://www.apache.org) + - [License](http://www.apache.org/licenses/LICENSE-2.0) + - [Thanks](http://www.apache.org/foundation/thanks.html) + - [Become a Sponsor](http://www.apache.org/foundation/sponsorship.html) + \ No newline at end of file Added: incubator/vcl/site/trunk/templates/single_narrative.html URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/templates/single_narrative.html?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/templates/single_narrative.html (added) +++ incubator/vcl/site/trunk/templates/single_narrative.html Mon May 7 18:59:33 2012 @@ -0,0 +1 @@ +{% extends "skeleton.html" %} Added: incubator/vcl/site/trunk/templates/skeleton.html URL: http://svn.apache.org/viewvc/incubator/vcl/site/trunk/templates/skeleton.html?rev=1335193&view=auto ============================================================================== --- incubator/vcl/site/trunk/templates/skeleton.html (added) +++ incubator/vcl/site/trunk/templates/skeleton.html Mon May 7 18:59:33 2012 @@ -0,0 +1,49 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<!-- + + 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. +--> + + <link href="/vcl/css/vcl.css" rel="stylesheet" type="text/css"> + <title>Apache VCL - {% block title %}{{ headers.title }}{% endblock %}</title> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +</head> + +<body> + <div id="navigation"> + {% filter markdown %}{% include "sidenav.mdtext" %}{% endfilter %} + </div> + + <div id="content"> + <h1 class="title">{% block title %}{{ headers.title }}{% endblock %}</h1> + {% block content %}{{ content|markdown }}{% endblock %} + </div> + + <div id="footer"> + <div class="copyright"> + <p> + Copyright © 2010 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> + </div> + +</body> +</html>