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

Revision 8470, 3.6 KB checked in by daisuke, 10 years ago (diff)

表記・画像の微調整

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