source: projects/web/trunk/bin/layout-errata.rb @ 4519

Revision 4519, 3.8 KB checked in by daisuke, 13 years ago (diff)

ツイートボタンを追加
各ページのタイトルに内容が入るように修正

Line 
1#!/usr/bin/ruby
2require 'erb'
3require 'rss'
4require '../../bin/rss_cdata.rb'
5require '../../bin/newsparser.rb'
6
7# Layout class
8class Layout
9  extend ERB::DefMethod
10  def_erb_method('layout', '../../template/layout-errata.html.erb')
11end
12
13#
14urlhead="http://vinelinux.org/"
15erratadir="./"
16tmpdir = '../../template/'
17
18header=File.open("../../template/header.tmpl")
19footer=File.open("../../template/footer.tmpl")
20
21curdir = File.basename(Dir.pwd)
22
23# Create rss object
24rss = RSS::Maker.make("1.0") do |maker|
25  maker.channel.about = "http://vinelinux.org/errata/#{curdir}/rss"
26  maker.channel.title = "エラッタ情報(#{curdir})"
27  maker.channel.description = "Vine Linux #{curdir} のセキュリティ及びバグ更新情報です"
28  maker.channel.link = "http://vinelinux.org/errata/#{curdir}/"
29  maker.items.do_sort = true
30
31# create errata indexhtml contents
32errataindex = <<EOF
33<h1>Vine Linux #{curdir} のエラッタ情報</h1>
34<div class="errata">
35<table>
36  <tr>
37   <th>日付</th>
38   <th>内容</th>
39   <th>対象</th>
40  </tr>
41EOF
42
43# create all errata page
44Dir.open(erratadir) { |dir|
45 for filename in dir.grep(/.dat$/).sort.reverse
46
47  errata = NewsParser.new IO.read(erratadir+filename)
48  titletext = errata.item['title'].gsub("\n","").gsub(/<[^>]+>/,"").strip
49  $header_title = 'Vine Linux Errata - '+titletext
50
51  # index content
52  errataindex += <<-EOF
53  <tr>
54   <td>[#{errata.item['date']}]</td>
55   <td><a href="/errata/#{curdir}/#{filename.gsub(/.dat/,".html")}">
56       #{errata.item['title']}</a></td>
57   <td>#{errata.item['target']}</td>
58  </tr>
59  EOF
60
61  # rss
62  rssitem = maker.items.new_item
63  rssitem.link = urlhead+"errata/#{curdir}/#{filename.gsub(/.dat/,".html")}"
64  rssitem.title = errata.item['title']
65  rssitem.date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
66  rssitem.dc_date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
67  rssitem.content_encoded = errata.item['info']
68
69  # errata page content
70  erratahtml = <<-EOF
71  <h1>#{errata.item['title']}</h1>
72  <div class="ads-middle-linkunit">
73<script type="text/javascript"><!--
74google_ad_client = "pub-0334540465096658";
75/* vinelinux link-unit */
76google_ad_slot = "4566651758";
77google_ad_width = 728;
78google_ad_height = 15;
79//-->
80</script>
81<script type="text/javascript"
82src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
83</script>
84  </div>
85  <div align="right">発行日:#{errata.item['date']}</div>
86  <div class="errata">
87  <dl>
88    <dt>対象 (Vine Linuxバージョン):</dt>
89    <dd><p>#{errata.item['target']}</p></dd>
90    <dt>内容:</dt>
91    <dd>#{errata.item['info']}</dd>
92    <dt>修正済パッケージ/ファイル:</dt>
93    <dd><pre>
94#{errata.item['update']}
95    </pre></dd>
96    <dt>入手先:</dt>
97    <dd>#{'update-watch, ' if curdir != "4x"}synaptic または apt-get でアップグレードすることができます。
98    <pre>
99# apt-get update
100# apt-get upgrade
101    </pre>
102    該当するパッケージをインストールしていない場合は、
103    更新の必要はありません。<br />
104    また、各ミラーサイトの
105    <pre>
106#{errata.item['directory']}
107    </pre>
108    からも個別に入手することができます。
109    </dd>
110    <dt>関連URL:</dt>
111    <dd><ul>
112  EOF
113
114  errata.item['url'].each do |line|
115    erratahtml += "    <li><a href=\"#{line}\">#{line}</a></li>\n"
116  end
117
118  erratahtml += <<-EOF
119    </ul></dd>
120  </dl>
121  </div>
122  EOF
123
124  # wrtite errata page
125  template = ERB.new(erratahtml)
126  newfile = open(filename.gsub(/.dat/,".html"), "w")
127  newfile.puts Layout.new.layout { template.result }
128  newfile.close
129 end
130}
131
132errataindex += <<EOF
133</table>
134</div>
135EOF
136
137# write errata indexhtml
138template = ERB.new(errataindex)
139errataindexhtml = open("index.html", "w")
140errataindexhtml.puts Layout.new.layout { template.result }
141errataindexhtml.close
142
143end
144
145# write errata rss
146File.open("errata#{curdir}.rdf", "w") do |file|
147  file.puts rss.to_s
148end
Note: See TracBrowser for help on using the repository browser.