#!/usr/bin/ruby
require 'erb'
require 'rss'
require '../bin/rss_cdata.rb'
require '../bin/newsparser.rb'

# Layout class
class Layout
  extend ERB::DefMethod
  def_erb_method('layout', '../template/layout-news.html.erb')
end

# 
urlhead="http://vinelinux.org/"
eventsdir="./"
topdir=".."
tmpdir = topdir+'/template/'
targetname="events"
rssname=targetname+'.rdf'

header=File.open(topdir+"/template/header.tmpl")
footer=File.open(topdir+"/template/footer.tmpl")

# Create rss object
rss = RSS::Maker.make("1.0") do |maker|
  maker.channel.about = "http://vinelinux.org/events/rss"
  maker.channel.title = "イベント・勉強会等"
  maker.channel.description = "Vine Linux 関連のイベント情報です"
  maker.channel.link = "http://vinelinux.org/events/"
  maker.items.do_sort = true

# create events indexhtml contents
eventsindex = <<EOF
<h1>Vine Linux のイベント情報</h1>
<div class="news">
<p>
Project Vine が主催、後援または協力のイベント・セミナー・勉強会の情報です。<br/>
ユーザの皆さんが主導で企画されたイベントでもこちらに掲載することができますので、
ML, IRC や Project Vine 宛にお問い合せください。
</p>
<table>
EOF

# create all events page
Dir.open(eventsdir) { |dir|
 for filename in dir.grep(/.dat$/).sort.reverse

  events = NewsParser.new IO.read(eventsdir+filename)
  titletext = events.item['title'].gsub("\n","").gsub(/<[^>]+>/,"").strip

  # index content
  eventsindex += <<-EOF
  <tr>
   <td class="date">[#{events.item['date']}]</td>
  EOF
  if (events.item['description'])
    eventsindex += <<-EOF
   <td class="title"><a href="/#{targetname}/#{filename.gsub(/.dat/,".html")}">
       #{titletext}</a></td>
  </tr>
    EOF
  else
    eventsindex += <<-EOF
   <td class="title"><a href="#{events.item['url']}">
       #{titletext}</a></td>
  </tr>
    EOF
  end

  # rss
  rssitem = maker.items.new_item
  rssitem.link = "#{events.item['url']}"
  if events.item['date'].gsub(/\,/,"") < Time.now.strftime('%Y%m%d')
    rssitem.title = "#{events.item['title']} (終了しました)"
  else
    rssitem.title = events.item['title']
  end
  rssitem.date = Time.parse(events.item['date'].gsub(/\,/,"/"))
  rssitem.dc_date = Time.parse(events.item['date'].gsub(/\,/,"/"))
  if (events.item['description'])
    rssitem.content_encoded = events.item['description']
  else
    rssitem.content_encoded = events.item['title']
  end

  if (events.item['description'])
    # event page content
    eventshtml = <<-EOF
<h1>#{events.item['title']}</h1>
<div class="ads-middle-linkunit">
<script type="text/javascript"><!--
google_ad_client = "pub-0334540465096658";
/* vinelinux link-unit */
google_ad_slot = "4566651758";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div align="right">発行日:#{events.item['date']}</div>
<div class="news">
<p>
#{events.item['description']}
</p>
</div>
    EOF
    # wrtite news page
    template = ERB.new(eventshtml)
    newfile = open(filename.gsub(/.dat/,".html"), "w")
    newfile.puts Layout.new.layout { template.result }
    newfile.close
  end
  
 end
}

eventsindex += <<EOF
</table>
</div>
EOF

# write events indexhtml
template = ERB.new(eventsindex)
eventsindexhtml = open("index.html", "w")
eventsindexhtml.puts Layout.new.layout { template.result }
eventsindexhtml.close

end

# write events rss
File.open("events.rdf", "w") do |file|
  file.puts rss.to_s
end
