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

Revision 7367, 3.9 KB checked in by daisuke, 11 years ago (diff)

fix page title

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