source: projects/web/branches/VINE_6_0_REL/bin/layout-events.rb @ 3101

Revision 3101, 3.5 KB checked in by daisuke, 13 years ago (diff)

cleanup layout

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
51  # index content
52  eventsindex += <<-EOF
53  <tr>
54   <td class="date">[#{events.item['date']}]</td>
55  EOF
56  if (events.item['description'])
57    eventsindex += <<-EOF
58   <td class="title"><a href="/#{targetname}/#{filename.gsub(/.dat/,".html")}">
59       #{titletext}</a></td>
60  </tr>
61    EOF
62  else
63    eventsindex += <<-EOF
64   <td class="title"><a href="#{events.item['url']}">
65       #{titletext}</a></td>
66  </tr>
67    EOF
68  end
69
70  # rss
71  rssitem = maker.items.new_item
72  rssitem.link = "#{events.item['url']}"
73  if events.item['date'].gsub(/\,/,"") < Time.now.strftime('%Y%m%d')
74    rssitem.title = "#{events.item['title']} (終了しました)"
75  else
76    rssitem.title = events.item['title']
77  end
78  rssitem.date = Time.parse(events.item['date'].gsub(/\,/,"/"))
79  rssitem.dc_date = Time.parse(events.item['date'].gsub(/\,/,"/"))
80  if (events.item['description'])
81    rssitem.content_encoded = events.item['description']
82  else
83    rssitem.content_encoded = events.item['title']
84  end
85
86  if (events.item['description'])
87    # event page content
88    eventshtml = <<-EOF
89<h1>#{events.item['title']}</h1>
90<div class="ads-middle-linkunit">
91<script type="text/javascript"><!--
92google_ad_client = "pub-0334540465096658";
93/* vinelinux link-unit */
94google_ad_slot = "4566651758";
95google_ad_width = 728;
96google_ad_height = 15;
97//-->
98</script>
99<script type="text/javascript"
100src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
101</script>
102</div>
103<div align="right">発行日:#{events.item['date']}</div>
104<div class="news">
105<p>
106#{events.item['description']}
107</p>
108</div>
109    EOF
110    # wrtite news page
111    template = ERB.new(eventshtml)
112    newfile = open(filename.gsub(/.dat/,".html"), "w")
113    newfile.puts Layout.new.layout { template.result }
114    newfile.close
115  end
116 
117 end
118}
119
120eventsindex += <<EOF
121</table>
122</div>
123EOF
124
125# write events indexhtml
126template = ERB.new(eventsindex)
127eventsindexhtml = open("index.html", "w")
128eventsindexhtml.puts Layout.new.layout { template.result }
129eventsindexhtml.close
130
131end
132
133# write events rss
134File.open("events.rdf", "w") do |file|
135  file.puts rss.to_s
136end
Note: See TracBrowser for help on using the repository browser.