Class: AutomaticUpcomingEvents

Inherits:
Object
  • Object
show all
Defined in:
lib/helpers/default-helpers.rb

Instance Method Summary collapse

Constructor Details

#initialize(wiki, calendar, days_passed = 0, days_future = 7, pagename = 'Upcoming Events', author = "AutomaticUpcomingEvents") ⇒ AutomaticUpcomingEvents

Returns a new instance of AutomaticUpcomingEvents.



327
328
329
330
331
# File 'lib/helpers/default-helpers.rb', line 327

def initialize( wiki, calendar, days_passed = 0, days_future = 7, pagename = 'Upcoming Events', author = "AutomaticUpcomingEvents" )
  @wiki, @calendar, @days_passed, @days__future, @pagename, @author = wiki, calendar, days_passed, days_future, pagename, author
  @wiki.watch_for( :page_revised ) { |event, page| page_revised( page ) }
  @wiki.watch_for( :day ) { render_upcoming_events }
end

Instance Method Details

#page_revised(page) ⇒ Object



333
334
335
# File 'lib/helpers/default-helpers.rb', line 333

def page_revised( page )
  render_upcoming_events if page.name =~ /^\d\d\d\d ... \d\d/
end

#render_event(name) ⇒ Object



349
350
351
352
353
354
355
356
357
# File 'lib/helpers/default-helpers.rb', line 349

def render_event( name )
  page = @wiki.page( name )
  headings = page.textile.select { |line| line =~ /^h\d\./ }
  headings = headings.map { |heading| heading.to_s[4..-1].strip }
  headings = [ page.textile.first_lines(1) ] if headings.empty?
  content = " [[ #{headings.shift} => #{page.name} ]] |\n"
  headings.each { |heading| content << "| &nbsp; | [[ #{heading} => #{page.name} ]] |\n" }
  content
end

#render_upcoming_eventsObject



337
338
339
340
341
342
343
344
345
346
347
# File 'lib/helpers/default-helpers.rb', line 337

def render_upcoming_events
  content = "<div class='upcomingevents'>\n\n"
  Time.now.day.upto( Time.now.day+7 ) do |day|
    time =  @calendar.time_for( Time.now.month, day )
    content << "| [[ #{time.relative_day} => #{@calendar.day_pagename( time )} ]] |"
    content << (@wiki.exists?( @calendar.day_pagename(time) ) ? render_event( @calendar.day_pagename( time ) ) : "&nbsp; |\n")  
  end
  content << "\n\np(more). [[(more) => #{@calendar.month_pagename}]]\n\n"
  content << "\n</div>\n"
  @wiki.revise( "Upcoming Events", content , "AutomaticCalendar" ) 
end