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

Revision 4519, 3.5 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-news.html.erb')
11end
12
13#
14urlhead="http://vinelinux.org/"
15eventsdir="./"
16topdir=".."
17tmpdir = topdir+'/template/'
18targetname="events"
19rssname=targetname+'.rdf'
20
21header=File.open(topdir+"/template/header.tmpl")
22footer=File.open(topdir+"/template/footer.tmpl")
23
24# Create rss object
25rss = RSS::Maker.make("1.0") do |maker|
26  maker.channel.about = "http://vinelinux.org/events/rss"
27  maker.channel.title = "イベント・勉強会等"
28  maker.channel.description = "Vine Linux 関連のイベント情報です"
29  maker.channel.link = "http://vinelinux.org/events/"
30  maker.items.do_sort = true
31
32# create events indexhtml contents
33eventsindex = <<EOF
34<h1>Vine Linux のイベント情報</h1>
35<div class="news">
36<p>
37Project Vine が主催、後援または協力のイベント・セミナー・勉強会の情報です。<br/>
38ユーザの皆さんが主導で企画されたイベントでもこちらに掲載することができますので、
39ML, IRC や Project Vine 宛にお問い合せください。
40</p>
41<table>
42EOF
43
44# create all events page
45Dir.open(eventsdir) { |dir|
46 for filename in dir.grep(/.dat$/).sort.reverse
47
48  events = NewsParser.new IO.read(eventsdir+filename)
49  titletext = events.item['title'].gsub("\n","").gsub(/<[^>]+>/,"").strip
50  $header_title = 'Vine Linux Events - '+titletext
51
52  # index content
53  eventsindex += <<-EOF
54  <tr>
55   <td class="date">[#{events.item['date']}]</td>
56  EOF
57  if (events.item['description'])
58    eventsindex += <<-EOF
59   <td class="title"><a href="/#{targetname}/#{filename.gsub(/.dat/,".html")}">
60       #{titletext}</a></td>
61  </tr>
62    EOF
63  else
64    eventsindex += <<-EOF
65   <td class="title"><a href="#{events.item['url']}">
66       #{titletext}</a></td>
67  </tr>
68    EOF
69  end
70
71  # rss
72  rssitem = maker.items.new_item
73  rssitem.link = "#{events.item['url']}"
74  if events.item['date'].gsub(/\,/,"") < Time.now.strftime('%Y%m%d')
75    rssitem.title = "#{events.item['title']} (終了しました)"
76  else
77    rssitem.title = events.item['title']
78  end
79  rssitem.date = Time.parse(events.item['date'].gsub(/\,/,"/"))
80  rssitem.dc_date = Time.parse(events.item['date'].gsub(/\,/,"/"))
81  if (events.item['description'])
82    rssitem.content_encoded = events.item['description']
83  else
84    rssitem.content_encoded = events.item['title']
85  end
86
87  if (events.item['description'])
88    # event page content
89    eventshtml = <<-EOF
90<h1>#{events.item['title']}</h1>
91<div class="ads-middle-linkunit">
92<script type="text/javascript"><!--
93google_ad_client = "pub-0334540465096658";
94/* vinelinux link-unit */
95google_ad_slot = "4566651758";
96google_ad_width = 728;
97google_ad_height = 15;
98//-->
99</script>
100<script type="text/javascript"
101src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
102</script>
103</div>
104<div align="right">発行日:#{events.item['date']}</div>
105<div class="news">
106<p>
107#{events.item['description']}
108</p>
109</div>
110    EOF
111    # wrtite news page
112    template = ERB.new(eventshtml)
113    newfile = open(filename.gsub(/.dat/,".html"), "w")
114    newfile.puts Layout.new.layout { template.result }
115    newfile.close
116  end
117 
118 end
119}
120
121eventsindex += <<EOF
122</table>
123</div>
124EOF
125
126# write events indexhtml
127template = ERB.new(eventsindex)
128eventsindexhtml = open("index.html", "w")
129eventsindexhtml.puts Layout.new.layout { template.result }
130eventsindexhtml.close
131
132end
133
134# write events rss
135File.open("events.rdf", "w") do |file|
136  file.puts rss.to_s
137end
Note: See TracBrowser for help on using the repository browser.