class NoticeSys::StatusView
Public Class Methods
new(basepath, xslfile, css_url, weblet)
click to toggle source
# File lib/noticesys.rb, line 204 def initialize(basepath, xslfile, css_url, weblet) @basepath, @xslfile, @css_url = basepath, xslfile, css_url @w = weblet @card = CardView.new(@w) end
Public Instance Methods
render(topic, rawid, referer)
click to toggle source
# File lib/noticesys.rb, line 212 def render(topic, rawid, referer) id = rawid[0..9].to_i filepath = File.join(@basepath, 'u', topic) a = [Time.at(id).strftime("%Y/%b/%-d").downcase, rawid] xmlfile = File.join(filepath, "%s/%s/index.xml" % a) xslfile = File.join(@basepath, "/xsl/notices/#{topic}.xsl") unless File.exists? xslfile then xslfile = @xslfile end dx = Dynarex.new(File.join(filepath, 'feed.xml')) doc = Rexle.new(File.read(xmlfile)) doc.root.element('summary/title').text = dx.title e = doc.root.element('summary/image') if e.nil? then e = Rexle::Element.new 'image' doc.root.element('summary').add e end doc.root.element('summary/image').text = dx.image # remove the card from the description desc = doc.root.element('body/description') desc.xpath('img|div').each(&:delete) doc = Nokogiri::XML(doc.root.xml) xslt = Nokogiri::XSLT(File.read(xslfile)) s = xslt.transform(doc) doc = Rexle.new(s.to_s) rx = Kvx.new(xmlfile) rawcard = rx.card card2, meta = if rawcard and rawcard.length > 10 then card = JSON.parse(rawcard, symbolize_names: true) if card.is_a? Hash then type = card.keys.first h = card[type] #img = h[:img].sub(/small(?=\.\w+$)/,'large') img = h[:img] metadata = @w.render(:meta, binding) [@card.render(dx, rx, card), metadata] end else '<span/>' end e = doc.root.at_css '#notice' desc = e.at_css '#desc' desc.add Rexle.new(card2).root ref = referer svg = @w.render 'svg/backarrow', binding back = if ref then "<div id='back'><a href='#{ref}' title='back'>#{svg}</a></div>" else '' end @w.render :status, binding end