source: projects/web/branches/VINE_6_0_REL/bin/layout-errata.rb @ 3129

Revision 3129, 3.7 KB checked in by daisuke, 13 years ago (diff)

{errata,news,event}parser を newsparser に統合

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  errata = NewsParser.new IO.read(erratadir+filename)
47
48  # index content
49  errataindex += <<-EOF
50  <tr>
51   <td>[#{errata.item['date']}]</td>
52   <td><a href="/errata/#{curdir}/#{filename.gsub(/.dat/,".html")}">
53       #{errata.item['title']}</a></td>
54   <td>#{errata.item['target']}</td>
55  </tr>
56  EOF
57
58  # rss
59  rssitem = maker.items.new_item
60  rssitem.link = urlhead+"errata/#{curdir}/#{filename.gsub(/.dat/,".html")}"
61  rssitem.title = errata.item['title']
62  rssitem.date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
63  rssitem.dc_date = Time.parse(errata.item['date'].gsub(/\,/,"/"))
64  rssitem.content_encoded = errata.item['info']
65
66  # errata page content
67  erratahtml = <<-EOF
68  <h1>#{errata.item['title']}</h1>
69  <div class="ads-middle-linkunit">
70<script type="text/javascript"><!--
71google_ad_client = "pub-0334540465096658";
72/* vinelinux link-unit */
73google_ad_slot = "4566651758";
74google_ad_width = 728;
75google_ad_height = 15;
76//-->
77</script>
78<script type="text/javascript"
79src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
80</script>
81  </div>
82  <div align="right">発行日:#{errata.item['date']}</div>
83  <div class="errata">
84  <dl>
85    <dt>対象 (Vine Linuxバージョン):</dt>
86    <dd><p>#{errata.item['target']}</p></dd>
87    <dt>内容:</dt>
88    <dd>#{errata.item['info']}</dd>
89    <dt>修正済パッケージ/ファイル:</dt>
90    <dd><pre>
91#{errata.item['update']}
92    </pre></dd>
93    <dt>入手先:</dt>
94    <dd>#{'update-watch, ' if curdir != "4x"}synaptic または apt-get でアップグレードすることができます。
95    <pre>
96# apt-get update
97# apt-get upgrade
98    </pre>
99    該当するパッケージをインストールしていない場合は、
100    更新の必要はありません。<br />
101    また、各ミラーサイトの
102    <pre>
103#{errata.item['directory']}
104    </pre>
105    からも個別に入手することができます。
106    </dd>
107    <dt>関連URL:</dt>
108    <dd><ul>
109  EOF
110
111  errata.item['url'].each do |line|
112    erratahtml += "    <li><a href=\"#{line}\">#{line}</a></li>\n"
113  end
114
115  erratahtml += <<-EOF
116    </ul></dd>
117  </dl>
118  </div>
119  EOF
120
121  # wrtite errata page
122  template = ERB.new(erratahtml)
123  newfile = open(filename.gsub(/.dat/,".html"), "w")
124  newfile.puts Layout.new.layout { template.result }
125  newfile.close
126 end
127}
128
129errataindex += <<EOF
130</table>
131</div>
132EOF
133
134# write errata indexhtml
135template = ERB.new(errataindex)
136errataindexhtml = open("index.html", "w")
137errataindexhtml.puts Layout.new.layout { template.result }
138errataindexhtml.close
139
140end
141
142# write errata rss
143File.open("errata#{curdir}.rdf", "w") do |file|
144  file.puts rss.to_s
145end
Note: See TracBrowser for help on using the repository browser.