Author: phobos Date: 2011-08-29 02:12:07 +0000 (Mon, 29 Aug 2011) New Revision: 24975
Added: website/trunk/include/fa/ website/trunk/include/fa/foot.wmi website/trunk/include/fa/head.wmi website/trunk/include/fa/info.wmi website/trunk/include/fa/navigation.wmi website/trunk/include/fa/side.wmi Log: make the farsi translations include sidenav, header, footer, navigation so they can use the right to left css and even look correct.
Added: website/trunk/include/fa/foot.wmi =================================================================== --- website/trunk/include/fa/foot.wmi (rev 0) +++ website/trunk/include/fa/foot.wmi 2011-08-29 02:12:07 UTC (rev 24975) @@ -0,0 +1,131 @@ +#!/usr/bin/env wml +#use "functions.wmi" + + <div id="footer"> + <div class="onion"><img src="$(IMGROOT)/onion.jpg" alt="Tor"></div> + <div class="about"> + <p>"Tor" and the "Onion Logo" are registered trademarks of + <a href="<page docs/trademark-faq>">The Tor Project, Inc.</a> + Content on this site is licensed under a <a + href="http://creativecommons.org/licenses/by/3.0/us/%22%3ECreative + Commons Attribution 3.0 United States License</a>, unless + otherwise noted.</p> +<!-- + # This will grab the date from svn info but formatting is tedious + # REQUIRES svn for this to work + <:{ + my $svninfo = `svn info`; + if ($svninfo =~ m/Last Changed Date: (\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2}:\d{2})\s(.*)\s\((.*)\)/) { + my $modifydate = "$4 $2 $3"; + # remove commas from date + $modifydate =~ s/,//; + print 'Last modified: '.$modifydate."\n"; + } + }:> + <:{ + #my $compiledate = `date`; + my $compiledate = `date +"%a %b %d %Y %k:%M:%S %z"`; + print 'Last compiled: '.$compiledate."\n"; + }:> +--> + </div> + <!-- END ABOUT --> + <!-- WE HAVE NO NEWSLETTER SO REMOVE THIS + <div class="newsletter"> + <form action=""> + <input class="textfield" type="text" name="email" value="Sign up for our newsletter! Enter email." onClick="clearDefault(this);"> + <input class="signup" type="submit" name="submit" value="Sign Up"> + </form> + </div> + END NEWSLETTER --> + <div class="col first"> + <h4>About Tor</h4> + <ul> + <li><a href="<page about/overview>">What Tor Does</a></li> + <li><a href="<page about/torusers>">Users of Tor</a></li> + <li><a href="<page about/corepeople>">Core Tor People</a></li> + <li><a href="<page about/sponsors>">Sponsors</a></li> + <li><a href="<page about/contact>">Contact Us</a></li> + </ul> + </div> + <!-- END COL --> + <div class="col"> + <h4>Get Involved</h4> + <ul> + <li><a href="<page donate/donate>">Donate</a></li> + <li><a href="<page docs/documentation>#MailingLists">Mailing List</a></li> + <li><a href="<page getinvolved/mirrors>">Mirrors</a></li> + <li><a href="<page docs/hidden-services>">Hidden Services</a></li> + <li><a href="<page getinvolved/translation>">Translations</a></li> +# <li><a href="<page getinvolved/open-positions>">Careers</a></li> + </ul> + </div> + <!-- END COL --> + <div class="col"> + <h4>Documentation</h4> + <ul> + <li><a href="<page docs/tor-manual>">Manuals</a></li> + <li><a href="<page docs/documentation>">Installation Guides</a></li> + <li><a href="<wiki>">Tor Wiki</a></li> + <li><a href="<page docs/faq>">General Tor FAQ</a></li> + </ul> + </div> + <!-- END COL --> + + <!-- List available languages --> + <div class="col wider"> + <h4>Languages</h4> + <: if (has_translations()) { :> + <p> + This page is also available in the following languages: + <: print list_translations() :>.<br /> + How to set <a href="http://www.debian.org/intro/cn#howtoset">the default document language</a>. + </p> + <: }; :> + </div> + +# LANGUAGE SWITCH CGI +# <div class="col wider"> +# <h4>Languages</h4> +# # this is a cgi trampoline to bounce us to the right page +# # alternately, if the client supports javascript we can redirect that way +# # noscript does not block onclick but clients may have disabled javascript completely +# # +# # for this to work we need to know the relative path from the document root +# # to the current directory that wml is in. +# <form action="$(DOCROOT)/cgi-bin/languageswitch.cgi"> +# <select name="Language" id="lang"> +# <:{ +# #import "perl-globals.wmi"; +# use Cwd; +# use Cwd 'abs_path'; +# use File::Spec; +# my $urlbase = File::Spec->abs2rel(getcwd(),abs_path("$(DOCROOT)")); +# my $LANGUAGES; +# my $page = $WML_SRC_FILENAME; +# opendir(DIR, getcwd()) or die $!; +# # take a look and see what language support we have +# while (my $file = readdir(DIR)) { +# if (-d $file) { +# if (-e "$file/$page") { +# my $url = $urlbase.'/'.$WML_SRC_BASENAME.'.html.'.$file; +# my $url2js = $WML_SRC_BASENAME.'.html.'.$file; +# print '<option value="'.$url.'" onclick="window.location=\''.$url2js.'\'">'.$LANGUAGES{$file}.'</option>'."\n" unless not defined $LANGUAGES{$file}; +# } +# } +# } +# closedir(DIR); +# }:> +# </select> +# <input class="go" type="submit" name="submit" value="Go"> +# </form> +# <p>Questions on this? Visit <a href="http://www.debian.org/intro/cn#howtoset">how to set the default document language</a>.</p> +# </div> +# + </div> + <!-- END FOOTER --> + + </div> + <!-- END WRAP --> +</body> +</html>
Added: website/trunk/include/fa/head.wmi =================================================================== --- website/trunk/include/fa/head.wmi (rev 0) +++ website/trunk/include/fa/head.wmi 2011-08-29 02:12:07 UTC (rev 24975) @@ -0,0 +1,145 @@ +#! /usr/bin/wml +<: use strict; :> +<: use warnings; :> +#use "perl-globals.wmi" +#use "links.wmi" +#use "versions.wmi" +#use "navigation.wmi" + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> + <title>$(TITLE)</title> + <link rel="shortcut icon" type="image/x-icon" href="$(IMGROOT)/favicon.ico"> + <ifneq "$(REDIRECT)" "" "<meta http-equiv="refresh" content="0;url=$(DOCROOT)/$(REDIRECT)">"> + <ifneq "$(REDIRECT_GLOBAL)" "" "<meta http-equiv="refresh" content="0;url=$(REDIRECT_GLOBAL)">"> + <ifeq "$(ANNOUNCE_RSS)" "yes" "<link rel="alternate" title="Tor Project OR-announce" href="http://rss.gmane.org/gmane.network.onion-routing.announce" +type="application/rss+xml">"> + + # begin WML to generate css/js paths + <ifneq "$(STYLESHEET)" "" "<link rel="stylesheet" type="text/css" href="$(DOCROOT)/$(STYLESHEET)">"> + <ifeq "$(STYLESHEET)" "" "<link rel="stylesheet" type="text/css" href="$(DOCROOT)/css/master.css">"> + + #<link href="css/master.css" rel="stylesheet" type="text/css"> + <!--[if lte IE 8]> + <link rel="stylesheet" type="text/css" href="$(DOCROOT)/css/ie8-and-down.css"> + <![endif]--> + <!--[if lte IE 7]> + <link rel="stylesheet" type="text/css" href="$(DOCROOT)/css/ie7-and-down.css"> + <![endif]--> + <!--[if IE 6]> + <link rel="stylesheet" type="text/css" href="$(DOCROOT)/css/ie6.css"> + <![endif]--> +# <script language="javascript" type="text/javascript" src="$(DOCROOT)/global.js"></script> + # end WML to generate css/js paths + + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="author" content="The Tor Project, Inc."> + <meta name="keywords" content="anonymity online, tor, tor project, censorship circumvention, traffic analysis, anonymous communications research"> +</head> +<body> +<div id="wrap"> + <div id="header"> + <h1 id="logo"><a href="<page index>">Tor</a></h1> + # navigation menu generation + <div id="nav"> + <ul> + <:{ + # create a hash and maintain order of keys + my %navigation; + my @keys; + while (@navigation) { + my $key = shift @navigation; + my $val = shift @navigation; + push @keys, $key; + $navigation{$key} = $val; + } + + my $page = $WML_SRC_BASENAME; + my $lang = "$(LANG)"; + + for my $key (@keys) { + my ($dir, $base) = $key =~ m,^(?:(.*)/)?(.*?)$,; + + # in directory of active link, set class active + my $class; + if ((defined $dir) and ($WML_SRC_DIRNAME =~/$dir/) or ($WML_SRC_BASENAME eq $base)) { + $class = 'class="active"'; + } else { + $class = ''; + } + + $dir = '.' unless defined $dir; + + # translated version + if (-e "$(DOCROOT)/$dir/$lang/$base.wml") { + printf '<li><a '.$class.' href="%s">%s</a></li>'."\n", + stripDotSlashs("$(DOCROOT)/$dir/$base.html.$(LANG)"),$navigation{$key}; + } + # english version + elsif (-e "$(DOCROOT)/$dir/en/$base.wml") { + printf '<li><a '.$class.' href="%s">%s</a></li>'."\n", + stripDotSlashs("$(DOCROOT)/$dir/$base.html"), $navigation{$key}; + } + # full url + elsif ($key =~/^http/) { + printf '<li><a href="%s">%s</a></li>'."\n", $key, $navigation{$key}; + } else { + warn "$WML_SRC_FILENAME has a [page $key] (parses to +docdir: $(DOCROOT)/; dir: $dir; base: $base -> $(DOCROOT)/$dir/$lang/$base.wml), but that doesn't exist."; + } + } + }:> + </ul> + </div> + <!-- END NAV --> + # end navigation generation + <div id="calltoaction"> + <ul> + <:{ + my %calltoaction; + my @keys; + while (@calltoaction) { + my $key = shift @calltoaction; + my $val = shift @calltoaction; + push @keys, $key; + $calltoaction{$key} = $val; + } + + my $page = $WML_SRC_BASENAME; + my $lang = "$(LANG)"; + for my $key (@keys) { + my ($dir, $base) = $key =~ m,^(?:(.*)/)?(.*?)$,; + + # in directory, set active + my $class; + if ((defined $dir) and ($WML_SRC_DIRNAME =~/$dir/) or ($WML_SRC_BASENAME eq $base)) { + #if ($WML_SRC_BASENAME eq $base) { + $class = 'class="active"'; + } else { + $class = ''; + } + + $dir = '.' unless defined $dir; + # try to use a translated version + if (-e "$(DOCROOT)/$dir/$lang/$base.wml") { + printf '<li class="donate"><a '.$class.' href="%s">%s</a></li>'."\n", + stripDotSlashs("$(DOCROOT)/$dir/$base.html.$(LANG)"),$calltoaction{$key}; + } + # default to english version + elsif (-e "$(DOCROOT)/$dir/en/$base.wml") { + printf '<li class="donate"><a '.$class.' href="%s">%s</a></li>'."\n", + stripDotSlashs("$(DOCROOT)/$dir/$base.html"), $calltoaction{$key}; + } else { + warn "$WML_SRC_FILENAME has a [page $key] (parses to docdir: $(DOCROOT)/; dir: $dir; base: $base -> $(DOCROOT)/$dir/$lang/$base.wml), but that doesn't exist."; + } + } + }:> + </ul> + </div> + <!-- END CALLTOACTION --> + </div> + <!-- END HEADER --> + +#<ifneq "$(REDIRECT)" "" "Redirecting to <a href="$(DOCROOT)/$(REDIRECT)">$(DOCROOT)/$(REDIRECT)</a>."> +#<ifneq "$(REDIRECT_GLOBAL)" "" "Redirecting to <a href="$(REDIRECT_GLOBAL)">$(REDIRECT_GLOBAL)</a>.">
Added: website/trunk/include/fa/info.wmi =================================================================== --- website/trunk/include/fa/info.wmi (rev 0) +++ website/trunk/include/fa/info.wmi 2011-08-29 02:12:07 UTC (rev 24975) @@ -0,0 +1,10 @@ +#!/usr/bin/env wml +<div class="img-shadow"> + <div class="infoblock"> + <h2 class="bulb">Tor Tip</h2> + <p>Tor is written for and supported by people like you. <a href="<page +donate/donate>">Donate today</a>!</p> + </div> + <!-- END INFOBLOCK --> +</div> +<!-- END IMG-SHADOW -->
Added: website/trunk/include/fa/navigation.wmi =================================================================== --- website/trunk/include/fa/navigation.wmi (rev 0) +++ website/trunk/include/fa/navigation.wmi 2011-08-29 02:12:07 UTC (rev 24975) @@ -0,0 +1,24 @@ +#!/usr/bin/wml + +## translation metadata +# Revision: $Revision: 22069 $ +# Translation-Priority: 1-high + +<: + # path link text + my @navigation = ( + 'index' , 'Home', + 'about/overview' , 'About Tor', + 'docs/documentation' , 'Documentation', + 'projects/projects' , 'Projects', + 'press/press' , 'Press', + '<blog>' , 'Blog', + 'http://printfection.com/torprojectstore' , 'Store', + ); + my @calltoaction = ( + 'download/download' , 'Download', + 'getinvolved/volunteer' , 'Volunteer', + 'donate/donate' , 'Donate', + ); + +:>
Added: website/trunk/include/fa/side.wmi =================================================================== --- website/trunk/include/fa/side.wmi (rev 0) +++ website/trunk/include/fa/side.wmi 2011-08-29 02:12:07 UTC (rev 24975) @@ -0,0 +1,91 @@ +#! /usr/bin/wml +<: use strict; :> +<: use warnings; :> +#use "perl-globals.wmi" +#use "links.wmi" +#use "versions.wmi" +#use "sidenav.wmi" +<div class="img-shadow"> + <div id="sidenav"> + <: + # recursively search menu structure to see if it contains a given page + sub containsSub($$); + sub containsSub($$) { + my ($elements, $page) = @_; + for my $ele (@{$elements}) { + if (containsSub($ele->{'subelements'},$page)){ + return 1; + } elsif ($page eq $ele->{'url'}) { + return 1; + } + + } + return 0; + } + + # generate navigation menu + sub printNavMenu($$$); + sub printNavMenu($$$) { + my ($navmenu, $page, $lang) = @_; + print '<ul>'."\n"; + for my $navmenu (@{$navmenu}) { + # this menu entry is the current (active) page + if ($navmenu->{'url'} eq $page) { + + # the current page has nested menu elements + if ($navmenu->{'subelements'}) { # menu has dropdown + printf '<li class="dropdown active"><a class="active" href="%s">%s</a></li>'."\n", + pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'}; + + print '<li>'."\n"; + printNavMenu($navmenu->{'subelements'},$page,$lang); + print '</li>'."\n"; + + # the current (active) page does not have sub elements + } else { + printf '<li class="active"><a class="active" href="%s">%s</a></li>'."\n", + pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'}; + } + + # a subelement of this menu item is the current (active) page + } elsif (containsSub($navmenu->{'subelements'}, $page)) { + printf '<li class="dropdown"><a class="active" href="%s">%s</a></li>'."\n", + pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'}; + + print '<li>'."\n"; #encapsulate subelements + # recurse to generate the expanded menu + printNavMenu($navmenu->{'subelements'},$page,$lang); + print '</li>'."\n"; #encapsulate subelements + + # the menu entry is not active and does not enclose the active page + } else { + + # if there are subelements, set collapsed style + if ($navmenu->{'subelements'}) { + printf '<li class="dropdown"><a href="%s">%s</a></li>'."\n", + pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'}; + # regular menu entry + } else { + printf '<li><a href="%s">%s</a></li>'."\n", + pageToURL($navmenu->{'url'}, $lang), $navmenu->{'txt'}; + } + } + } + print '</ul>'."\n"; + } + + my $lang = "$(LANG)"; + + use Cwd; + use Cwd 'abs_path'; + use File::Spec; + + # get document path from site root + my $path = File::Spec->abs2rel(getcwd(),abs_path("$(DOCROOT)")); + my $page = $WML_SRC_BASENAME; + printNavMenu($sidenav, $path.'/'.$page, $lang); + :> + </div> + <!-- END SIDENAV --> +</div> +<!-- END IMG-SHADOW -->