Version améliorée, en cours...

This commit is contained in:
Yann Esposito 2009-10-12 17:36:17 +02:00
parent a9b0c23551
commit bbbc216bb4
10 changed files with 116 additions and 34 deletions

1
.gitignore vendored
View file

@ -4,4 +4,5 @@ output/Scratch/en
output/Scratch/fr
output/Scratch/multi
output/Scratch/map.yrf
output/index.html
tmp/

6
Rules
View file

@ -1,6 +1,12 @@
#!/usr/bin/env ruby
# page d'Accueil
route '/' do
'/index.html'
end
# default
# rep => :default est sous-entendu
compile '*' do
filter :erb
layout 'default'

View file

@ -3,7 +3,7 @@ data_sources:
- items_root: /
layouts_root: /
type: filesystem_combined
output_dir: output/
output_dir: output
# les langues
languages:

View file

@ -1,5 +1,5 @@
---
title: Home
title: Titre principal
multiTitle:
fr: Titre en français
en: English Title

View file

@ -8,10 +8,20 @@
-----
<%
# -- init variables --
class LocalConf
attr_accessor :multi, :blog, :article, :languages, :language, :indent
def to_s
instance_variables.map{ |x|
if instance_variable_get(x).class == Array
%{#{x.intern}= [#{instance_variable_get(x).join(', ')}]}
else
%{#{x.intern}= #{instance_variable_get(x)}}
end
}
end
end
conf=LocalConf.new
@ -32,16 +42,12 @@ conf.blog=blog
languages=@config[:languages]
conf.languages=languages
self.instance_variable_set(:@conf, conf)
puts "YYY"
puts %{multi= #{conf.multi}}
puts %{article= #{conf.article}}
puts %{language= #{conf.language}}
puts %{blog= #{conf.blog}}
puts %{languages= [#{conf.languages.join(", ")}]}
puts "YYY"
puts '---'
# puts conf.to_s
%><?xml version="1.0" encoding="utf-8"?>
%><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
@ -51,42 +57,46 @@ puts "YYY"
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/layout.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/gen.css" />
<%= conf.indent=' '; feeds(conf) %>
<%= conf.indent=' '; feeds %>
<% if multi %>
<link rel="stylesheet" type="text/css" href="/Scratch/css/js.css" />
<% alternate(conf) %>
<% alternate %>
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.ga.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<title>Yann Esposito</title>
<title>Yogsototh's Blog</title>
<% else %>
<link rel="stylesheet" type="text/css" href="/Scratch/css/nojs.css" />
<title>Yogsototh's Blog - <%= puts %{multiPageTitle} %></title>
<title>Yogsototh's Blog - <%= multiPageTitle %></title>
<% end %>
</head>
<body>
<% if multi %>
<noscript>
<div id="blackpage"></div>
<div id="nojsredirect">
<% languages.each do |lang| %>
<div id="nojsredirect"><%
# verrue pour l'index
chemin=@item_rep.path
if chemin == '/'
chemin = '/Scratch/multi/'
end
# fin de verrue
languages.each do |lang| %>
<div class="nojsbutton">
<a href="<%= puts %{@item_rep.path.sub(/multi/,lang)} %>">
<%= puts %{tradOfKeywordIn(:nojsclickme,lang)} %>
</a>
</div>
<% end %>
<a href="<%= chemin.sub(/multi/,lang) %>">
<%= tradOfKeywordIn(:nojsclickme,lang) %>
</a>
</div><%
end %>
</div>
</noscript>
<% end %>
<div id="content">
<div id="entete">
<div id="titre">
<h1>
<%= puts %{multiTitleFor(@page)} %>
<%= multiTitle %>
</h1>
</div>
<% if article or blog %>
@ -96,7 +106,7 @@ puts "YYY"
<span class="<%=lang%>"><a href="http://feeds.feedburner.com/yannespositocom<%=lang%>">RSS</a></span>
<% end %>
<% else %>
<span class="<%=@item_rep.name%>"><a href="http://feeds.feedburner.com/yannespositocom<%= language %>">RSS</a></span>
<span class="<%=@item_rep.name%>"><a href="http://feeds.feedburner.com/yannespositocom<%= language %>">RSS</a></span>
<% end %>
</div>
<% end %>
@ -123,6 +133,12 @@ puts "YYY"
<div class="flush"></div>
<% if @item[:content_for_summary] %>
<div class="summary">
<% @item[:content_for_summary] %>
</div>
<% end %>
<% if article and depthOf(@page) == 2 %>
<% if hasPrevious(@page) %>
<%= previousArticleFor(@page) %>

View file

@ -1,10 +1,10 @@
def alternate(conf)
def alternate
# need multi to be declared to true when in
# multi-language mode false otherwise
# languages to the list of available languages
# language to the current language
if conf.multi
conf.languages.collect { |lang| %{<link rel="alternate" lang="#{lang}" xml:lang="#{lang}" title="#{@item[:multiTitle][lang]}" type="text/html" hreflang="#{lang}" href="#{@item_rep.path.sub(/multi/,lang)}" />\n}}.join(conf.indent)
if @conf.multi
@conf.languages.collect { |lang| %{<link rel="alternate" lang="#{lang}" xml:lang="#{lang}" title="#{@item[:multiTitle][lang]}" type="text/html" hreflang="#{lang}" href="#{@item_rep.path.sub(/multi/,lang)}" />\n}}.join(@conf.indent)
else
%{}
end

View file

@ -1,2 +0,0 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.

View file

@ -1,11 +1,11 @@
def feeds(conf)
def feeds
# need multi to be declared to true when in
# multi-language mode false otherwise
# languages to the list of available languages
# language to the current language
if conf.multi
conf.languages.map { |lang| %{<link rel="alternate" type="application/rss+xml" title="RSS in #{lang}" href="http://feeds.feedburner.com/yannespositocom#{lang}"/>\n} }.join(conf.indent)
if @conf.multi
@conf.languages.map { |lang| %{<link rel="alternate" type="application/rss+xml" title="RSS in #{lang}" href="http://feeds.feedburner.com/yannespositocom#{lang}"/>\n} }.join(@conf.indent)
else
%{<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom#{conf.language}">}
%{<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocom#{@conf.language}">}
end
end

13
lib/helpers.rb Normal file
View file

@ -0,0 +1,13 @@
# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
# Utilisation des helper
#
# ecrire
# <% content_for :summary do %>
# Sommaire que je veux ecrire
# <% end %>
#
# Pour remplir à la fois le texte et le sommaire
include Nanoc3::Helpers::Capturing

48
lib/multi.rb Normal file
View file

@ -0,0 +1,48 @@
def multiPageTitle
if @conf.multi
@item.title
else
@item[:multiTitle][@conf.language]
end
end
def multiTitle
multiTitleFor(@item)
end
def multiTitleFor(item)
begin
if @conf.multi
@conf.languages.map{ |l| %{<span class="#{l}">#{item[:multiTitle][l.intern]}</span>} }.join("\n")
else
item[:multiTitle][@conf.language]
end
rescue
puts "ERROR (lib/multi.rb) certainement pas d'attribut multiTitle"
return item[:title]
end
end
def tradOf(keyword)
end
def tradOfKeywordIn(keyword, language)
begin
@config[:translations][keyword][language.intern]
rescue
if @config[:translations].nil?
puts %{ERROR (lib/multi.rb) Please make a 'translations' hash table in config.yaml}
elsif @config[:translations][keyword].nil?
puts %{ERROR (lib/multi.rb) in config.yaml,
in the 'translations' hash, I can't find the keyword #{keyword}}
elsif @config[:translations][keyword][language.intern].nil?
puts %{ERROR (lib/multi.rb) in config.yaml,
in the 'translations' hash, I can't find the translation
in #{language} for the keyword #{keyword}}
else
puts %{ERROR (lib/multi.rb) erreur inconnue}
end
return '[Sorry Translation Error]'
end
end