You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by fa...@apache.org on 2009/03/27 11:33:07 UTC

svn commit: r759091 [2/8] - in /labs/consite: ./ trunk/ trunk/conferences/ trunk/conferences/app/ trunk/conferences/app/controllers/ trunk/conferences/app/controllers/admin/ trunk/conferences/app/controllers/admin/con/ trunk/conferences/app/helpers/ tr...

Added: labs/consite/trunk/conferences/app/helpers/admin/con/sponsor_types_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/sponsor_types_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/sponsor_types_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/sponsor_types_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,2 @@
+module Admin::Con::SponsorTypesHelper
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/sponsor_types_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/helpers/admin/con/sponsors_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/sponsors_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/sponsors_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/sponsors_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,3 @@
+module Admin::Con::SponsorsHelper
+  include Admin::Con::DescriptionColumnHelper
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/sponsors_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/helpers/admin/con/submissions_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/submissions_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/submissions_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/submissions_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,23 @@
+module Admin::Con::SubmissionsHelper
+  def report_title
+    "#{@conference.name} Submissions"
+  end
+
+  include Admin::Con::DescriptionColumnHelper
+  
+  def presenter_column(record)
+    record.presenter.name
+  end
+
+   def scheduled_sessions_column(record)
+     sessions = []
+     if record.scheduled_sessions
+       record.scheduled_sessions.each do |session|
+         track = session.track
+         start = session.start_time_local
+         sessions << h("#{start.to_formatted_s(:time)} on #{track.date.to_formatted_s(:short)} in #{track.name}")
+       end
+     end
+     return sessions.join(', ')
+   end
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/submissions_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/helpers/admin/con/time_column_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/time_column_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/time_column_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/time_column_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,5 @@
+module Admin::Con::TimeColumnHelper
+
+
+
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/time_column_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/helpers/admin/con/tracks_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/tracks_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/tracks_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/tracks_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,2 @@
+module Admin::Con::TracksHelper
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/tracks_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/helpers/admin/con/venues_helper.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/helpers/admin/con/venues_helper.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/helpers/admin/con/venues_helper.rb (added)
+++ labs/consite/trunk/conferences/app/helpers/admin/con/venues_helper.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,3 @@
+module Admin::Con::VenuesHelper
+  include Admin::Con::DescriptionColumnHelper
+end

Propchange: labs/consite/trunk/conferences/app/helpers/admin/con/venues_helper.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/activity.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/activity.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/activity.rb (added)
+++ labs/consite/trunk/conferences/app/models/activity.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,66 @@
+class Activity < ActiveRecord::Base
+
+  acts_as_taggable
+  acts_as_cache_clearing
+
+  belongs_to :type, :class_name => "PresentationType", :foreign_key => "presentation_type_id"
+  belongs_to :presenter, :class_name => "User", :foreign_key => "presenter_id"  
+  belongs_to :location
+  belongs_to :track
+  belongs_to :conference
+
+  before_validation :update_conference
+
+  def duration
+    (end_time - start_time) / 60
+  end
+
+  def start_time_local
+    if conference
+      tz = TimeZone[conference.time_zone]
+      return tz.utc_to_local(start_time)
+    else
+      return start_time
+    end
+  end
+
+  def end_time_local
+    if conference
+      tz = TimeZone[conference.time_zone]
+      return tz.utc_to_local(end_time)
+    else
+      return end_time
+    end
+  end
+
+  def update_conference
+    if track and not conference
+      self.conference = track.conference
+    end
+    if track and not location
+      self.location = track.location
+    end
+  end
+
+  def validate
+
+    if end_time < start_time
+      errors.add_to_base "The ending time must be after the start time."
+    end
+
+
+    if track and conference
+      if track.conference != conference
+        errors.add_to_base "The selected track is not part of the selected conference."
+      end
+    end
+
+    if track and location
+      if track.location != location
+        errors.add_to_base "The selected location differs from the selected track location."
+      end
+    end
+  end
+
+
+end

Propchange: labs/consite/trunk/conferences/app/models/activity.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/conference.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/conference.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/conference.rb (added)
+++ labs/consite/trunk/conferences/app/models/conference.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,130 @@
+class Conference < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  file_column :logo
+
+  belongs_to :venue
+
+  has_many :conference_roles
+  has_many :presenters, :through => :conference_roles, :order => ['name'], :class_name => 'User', :foreign_key => 'presenter_id'
+  has_many :capacities, :through => :roles
+  has_many :sponsors
+  has_many :submissions
+  has_many :tracks, :order => ["date"]
+  has_many :scheduled_sessions, :through => :tracks, :order => 'start_time'
+  has_many :activities, :order => ['start_time']
+  has_many :emails
+
+  validates_presence_of :name, :short_name, :venue
+  validates_uniqueness_of :short_name
+
+  after_create :generate_pages
+
+  def validate
+    if end_date < start_date
+      errors.add_to_base "The end_date must be after the start_date"
+    end
+  end
+
+
+ def first_session(date=self.start_date)
+   first_session = ScheduledSession.find(:first, :include => [:track],
+                     :order => ["scheduled_sessions.start_time"],
+                     :conditions => ["tracks.conference_id = ? and tracks.date = ?",
+                                  self.id, date])
+   first_activity = Activity.find(:first, :order => ['activities.start_time'],
+                                  :conditions => ["activities.conference_id = ? and activities.start_time > ? ",
+                                                 self.id, date])
+   if first_session and first_activity
+     if first_session.start_time < first_activity.start_time
+       return first_session
+     else
+       return first_activity
+     end
+   elsif first_session
+     return first_session
+   elsif first_activity
+     return first_activity
+   else
+     return nil
+   end
+ end
+
+ def last_session(date=self.start_date)
+   # first_session = ScheduledSession.find(:first, :include => [:track],
+   #                   :order => ["scheduled_sessions.start_time DESC"],
+   #                   :conditions => ["tracks.conference_id = ? and tracks.date = ?",
+   #                                self.id, date])
+
+   last_session = ScheduledSession.find(:first, :include => [:track],
+                     :order => ["scheduled_sessions.start_time DESC"],
+                     :conditions => ["tracks.conference_id = ? and tracks.date = ?",
+                                  self.id, date])
+                                  
+   last_activity = Activity.find(:first, :order => ['activities.start_time DESC'],
+                                  :conditions => ["activities.conference_id = ? and activities.start_time < ? ",
+                                                 self.id, date.tomorrow])   
+   if last_session and last_activity
+     if last_session.start_time > last_activity.start_time
+       return last_session
+     else
+       return last_activity
+     end
+   elsif last_session
+     return last_session
+   elsif last_activity
+     return last_activity
+   else
+     return nil
+   end
+ end
+
+
+  def start_time_for_date(date=self.start_date)
+    session = first_session(date)
+    return session.start_time if session
+  end
+
+  def end_time_for_date(date=self.start_date)
+    session = last_session(date)
+    return session.end_time if session
+  end
+
+  def cross_track_activities(day=nil)
+    where = "conference_id = ? and track_id is NULL "
+    where << " and start_time >= ? and start_time < ? " if day
+    conditions = [where, self.id ]
+    if day
+      conditions << day if day
+      conditions << (day + 1)
+    end
+    return Activity.find(:all,:order => 'activities.start_time', :conditions => conditions)
+  end
+
+  def cross_track_activities_in_range(start_time,end_time,inclusive=false)
+    where = "conference_id = ? and track_id is NULL "
+    if inclusive
+      where << " and start_time <= ? and end_time > ? "
+    else
+      where << " and start_time >= ? and start_time < ? "
+    end
+    conditions = [where, self.id ]
+    if inclusive
+      conditions << end_time
+      conditions << start_time
+    else
+      conditions << start_time
+      conditions << end_time
+    end
+    return Activity.find(:all,:order => 'activities.start_time', :conditions => conditions)
+  end
+
+  def in_the_past?
+     self.start_date < Time.now.to_date
+  end
+
+  def generate_pages
+    ConferenceGenerator.new(self).generate
+  end
+end

Propchange: labs/consite/trunk/conferences/app/models/conference.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/conference_role.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/conference_role.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/conference_role.rb (added)
+++ labs/consite/trunk/conferences/app/models/conference_role.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,46 @@
+require 'fastercsv'
+class ConferenceRole < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :conference
+  belongs_to :presenter, :class_name => "User", :foreign_key => "presenter_id"
+  # belongs_to :event, :polymorphic => true
+
+  def event
+    @event ||= event_type.singularize.camelize.constantize.find_by_id(event_id)
+  end
+  
+  alias :session :event
+
+  def self.to_csv(collection=[])
+    field_names = %w(Name UploadedPhoto ReceivedAgreement UploadedPresentation)
+    header_row = FasterCSV::Row.new(field_names, field_names, true)
+    table = FasterCSV::Table.new([header_row])
+    collection.each do |cr|
+      table << [
+        cr.to_label,
+        (cr.presenter.photo? rescue false),
+        (cr.event.submission.agreement_form_received? rescue false),
+        (cr.event.submission.presentation.materials? rescue false)
+        ]
+    end
+    table.to_csv
+  end
+
+  def session_name
+    case self.event
+      when ScheduledSession: self.event.submission.presentation.name
+      when Activity: self.event.name
+      when PanelMember: "#{self.event.submission.presentation.name} [PANEL]"
+    end
+  end
+
+  def to_label
+    if presenter
+      "#{presenter.name}: #{session_name}"
+    else
+      session_name
+    end
+  end
+end

Propchange: labs/consite/trunk/conferences/app/models/conference_role.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/email.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/email.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/email.rb (added)
+++ labs/consite/trunk/conferences/app/models/email.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,14 @@
+class Email < ActiveRecord::Base
+
+  belongs_to :conference
+
+  def recipients
+   return ['Speakers','Unaccepted Submitters','All']
+  end
+
+  def send
+    self.save
+    
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/email.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/location.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/location.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/location.rb (added)
+++ labs/consite/trunk/conferences/app/models/location.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,11 @@
+class Location < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :venue
+  has_many   :activities
+
+  validates_presence_of :name, :venue
+
+
+end

Propchange: labs/consite/trunk/conferences/app/models/location.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/organization.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/organization.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/organization.rb (added)
+++ labs/consite/trunk/conferences/app/models/organization.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,15 @@
+class Organization < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  file_column :logo
+
+  has_many :sponsors, :dependent => :destroy
+
+  validates_presence_of  :name
+
+  # regex wrong?
+#  validates_format_of :url, :allow_nil => true, :allow_blank => true,
+#                      :with =>  /(^(http|https):\/\/[a-z0-9]+([-.]{1}[a-z0-9]*)+. [a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/
+
+end

Propchange: labs/consite/trunk/conferences/app/models/organization.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/panel_member.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/panel_member.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/panel_member.rb (added)
+++ labs/consite/trunk/conferences/app/models/panel_member.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,14 @@
+class PanelMember < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :presenter, :class_name => "User", :foreign_key => "presenter_id"
+  belongs_to :submission
+  
+  validates_presence_of :submission, :presenter
+
+  def to_label
+    "#{self.presenter.name} on #{self.submission ? self.submission.name : '*MISSING SUBMISSION*'}"
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/panel_member.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/person.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/person.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/person.rb (added)
+++ labs/consite/trunk/conferences/app/models/person.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,35 @@
+class Person < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  file_column :photo
+
+  has_one :user
+
+  has_many :conference_roles
+  has_many :conferences, :through => :conferences_roles
+  has_many :presentations
+  has_many :panel_members
+  has_many :submissions, :through => :presentations
+  has_many :activities
+
+  def scheduled_sessions(conference=nil, include_panels=true)
+    sessions = [ ]
+    conference_roles.each do |role|
+      inc = true
+      if conference
+        inc = role.conference == conference
+      end
+
+      case role.session
+        when ScheduledSession then sessions << role.session if inc
+        when PanelMember
+          if include_panels and inc
+            sessions << role.session.submission.scheduled_session
+          end
+       end
+     end
+    return sessions
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/person.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/presentation.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/presentation.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/presentation.rb (added)
+++ labs/consite/trunk/conferences/app/models/presentation.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,17 @@
+class Presentation < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  acts_as_taggable
+  file_column :materials
+
+#  belongs_to :presenter, :class_name => "Person", :foreign_key => "presenter_id"
+
+  belongs_to :presenter, :class_name => "User", :foreign_key => "presenter_id"
+  belongs_to :type, :class_name => "PresentationType", :foreign_key => "type_id"
+
+  has_many :submissions
+  
+  validates_presence_of :presenter
+
+end

Propchange: labs/consite/trunk/conferences/app/models/presentation.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/presentation_type.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/presentation_type.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/presentation_type.rb (added)
+++ labs/consite/trunk/conferences/app/models/presentation_type.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,9 @@
+class PresentationType < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  has_many :presentations, :class_name => "Presentation", :foreign_key => "type_id"
+  has_one :presentation_capacity
+  has_many :activities
+
+end

Propchange: labs/consite/trunk/conferences/app/models/presentation_type.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/presenter_mailer.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/presenter_mailer.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/presenter_mailer.rb (added)
+++ labs/consite/trunk/conferences/app/models/presenter_mailer.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,13 @@
+class PresenterMailer < ActionMailer::Base
+  
+
+  def notification presenter, submission, title, content
+    recipients presenter.email
+    subject title
+    # configure this via conference
+    from "planners@apachecon.com"
+    body content
+    
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/presenter_mailer.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/schedule_day_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/schedule_day_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/schedule_day_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/schedule_day_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,18 @@
+class ScheduleDayPage < Page
+  include ScheduleTags
+
+  before_validation {|r| r.virtual = true }
+
+  def virtual?
+    true
+  end
+
+  def render
+    lazy_initialize_parser_and_context
+    year, month, day = $1, $2, $3 if request_uri =~  %r{#{parent.url}(\d{4})/(\d{2})/(\d{2})$}
+    @context.globals.schedule_date = Date.new(year.to_i,month.to_i,day.to_i)
+    super
+  end
+
+
+end

Propchange: labs/consite/trunk/conferences/app/models/schedule_day_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/schedule_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/schedule_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/schedule_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/schedule_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,26 @@
+class SchedulePage < Page
+  include ScheduleTags
+
+
+  def find_by_url(url, live = true, clean = false)
+    url = clean_url(url) if clean
+    if url =~ %r{^#{ self.url }(\d{4})(?:/(\d{2})(?:/(\d{2}))?)?/?$}
+      year, month, day = $1, $2, $3
+      children.find_by_class_name(
+        case
+        when day
+          'ScheduleDayPage'
+        when month
+          'ScheduleMonthPage'
+        else
+          'ScheduleYearPage'
+        end
+      )
+    else
+      super
+    end
+  end
+
+
+
+end

Propchange: labs/consite/trunk/conferences/app/models/schedule_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/scheduled_session.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/scheduled_session.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/scheduled_session.rb (added)
+++ labs/consite/trunk/conferences/app/models/scheduled_session.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,116 @@
+class ScheduledSession < ActiveRecord::Base
+
+  # NOTES
+  # stored times should ALWAYS be in UTC in the database
+  # timezone convertion happens in the active_scaffold controller
+  # callbacks keep the end_time in-synch with the duration
+  # and the dates in-synch with the track date
+
+  # uses the tzinfo_timezone plugin and tzinfo gem
+  # http://tzinfo.rubyforge.org/
+
+  acts_as_cache_clearing
+
+  belongs_to :submission
+#  has_one :presentation, :through => :submission
+  belongs_to :track
+
+  before_validation :update_date_and_times
+
+  [:name, :description, :duration ].each do |field|
+    define_method field do
+      if submission && submission.presentation
+        return submission.presentation[field]
+      end
+    end
+  end   
+
+  def presenter
+    if submission && submission.presentation
+      return submission.presentation.presenter
+    end
+  end
+
+  def type
+    if submission && submission.presentation
+      return submission.presentation.type
+    end
+  end
+
+  def tag_list
+    if submission && submission.presentation
+      return submission.presentation.tag_list
+    end
+  end
+
+
+  def validate
+
+#    if start_time > end_time
+#      errors.add_to_base("The start time must be before the end time.")
+#    end
+
+#    if start_time.to_date != track.date or end_time.to_date != track.date
+#      errors.add_to_base("The start and end time dates must match the date of the track (#{track.date}).")
+#    end
+
+    if submission.conference != track.conference
+      errors.add_to_base("The presentation was submitted to a different conference than the selected track. (#{submission.conference.name} vs. #{track.conference.name}")
+    end
+  end
+
+  def to_label
+    "#{self.submission.presentation.name} @ #{self.track.conference.name}"
+  end
+
+  def start_time_local
+    if track
+      tz = TimeZone[track.conference.time_zone]
+      return tz.utc_to_local(start_time)
+    else
+      return start_time
+    end
+  end
+
+  def end_time_local
+    if track
+      tz = TimeZone[track.conference.time_zone]
+      return tz.utc_to_local(end_time)
+    else
+      return end_time
+    end
+  end
+
+
+  def update_date_and_times
+    # issue with doing this after local/utc conversion
+    # what happens when the converted date is after midnight?
+    # calculate_end_time_from_duration
+    # calculate_dates_from_track
+  end
+
+  def calculate_end_time_from_duration
+    if duration
+      self.end_time = start_time + (duration * 60)
+    end
+  end
+
+  def calculate_dates_from_track
+    if track
+
+      [:start_time, :end_time].each do |time|
+
+        # now set the date portion to the same date
+        # as the associated track
+
+        self[time] = Time.utc( track.date.year,
+                                  track.date.month,
+                                  track.date.day,
+                                  self[time].hour,
+                                  self[time].min,
+                                  self[time].sec,0)
+      end
+    end
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/scheduled_session.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/session_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/session_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/session_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/session_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,16 @@
+class SessionPage < Page
+  include SessionTags
+
+  before_validation {|r| r.virtual = true }
+
+  def virtual?
+    true
+  end
+
+  def render
+    lazy_initialize_parser_and_context
+   # @context.globals.scheduled_session = ScheduledSession.find(get_session_from_url)
+    super
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/session_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sessions_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sessions_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sessions_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/sessions_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,15 @@
+class SessionsPage < Page
+  include SessionTags
+
+  def find_by_url(url, live=true,clean=false)
+    url = clean_url(url) if clean
+    if url =~ %r{#{self.url}(\w+)}
+      prefix = $1
+      children.find_by_class_name 'SessionPage'
+    else
+      super
+    end
+  end
+
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sessions_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/speaker_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/speaker_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/speaker_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/speaker_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,82 @@
+class SpeakerPage < Page
+  include SpeakerTags
+
+  before_validation {|r| r.virtual = true }
+
+  def virtual?
+    true
+  end
+
+  def render
+    lazy_initialize_parser_and_context
+    @context.globals.speaker = User.find(get_speaker_from_url)
+    super
+  end
+
+  tag "conference:speaker" do |tag|
+    if tag.globals.speaker
+      tag.locals.speaker = tag.globals.speaker
+    else
+      tag.locals.speaker = User.find(get_speaker_from_url)
+    end
+    tag.expand
+  end
+  
+  tag "conference:speaker:bio" do | tag |
+    tag.locals.speaker.notes
+  end
+
+  [:name, :url, :notes].each do |column|
+    desc %{  Renders the '#{column}' attribute of the current speaker.}
+    tag "conference:speaker:#{column}" do |tag|
+      tag.locals.speaker[column] if tag.locals.speaker
+    end
+  end
+
+  desc %{ Image for speakers }
+  tag "conference:speaker:photo" do |tag|
+    @speaker = tag.locals.speaker
+    "<img src='#{url_for_file_column("speaker", "photo")}' alt='#{@speaker.name}'/>"
+  end
+
+
+  desc %{ Scheduled session names for this speaker }
+  tag "conference:speaker:sessions" do |tag|
+    delimiter = tag.attr['delim']? tag.attr['delim'] : ","
+    if tag.attr['prefix']
+      prefix = tag.attr['prefix']
+    else
+      prefix = "#{tag.locals.conference.short_name}/sessions"
+    end
+    sessions = tag.locals.speaker.scheduled_sessions(tag.locals.conference)
+    presentation_names = [ ]
+    sessions.each do | session |
+      link =  "<a href='/#{prefix}/#{session.id}'>"
+      link << "#{session.submission.presentation.name}</a>"
+      presentation_names << link
+    end
+    presentation_names.join(delimiter)
+  end
+
+  desc %{ Associated activities for this presenter }
+  tag "conference:speaker:activities" do |tag|
+    delimiter = tag.attr['delim']? tag.attr['delim'] : ","
+    activities = Activity.find(:all, :conditions => ['conference_id = ? and user_id = ?',
+                                                     tag.locals.conference.id,
+                                                     tag.locals.speaker.id])
+    names = [ ]
+    activities.each { |a| names << a.name }
+    names.join(delimiter)
+  end
+
+
+  private
+    def request_uri
+      request.request_uri unless request.nil?
+    end
+
+   def get_speaker_from_url
+      $1 if request_uri =~ %r{#{parent.url}/?(\w+)/?$}
+   end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/speaker_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/speakers_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/speakers_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/speakers_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/speakers_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,14 @@
+class SpeakersPage < Page
+  include SpeakerTags
+
+  def find_by_url(url, live=true,clean=false)
+    url = clean_url(url) if clean
+    if url =~ %r{#{self.url}(\w+)}
+      prefix = $1
+      children.find_by_class_name 'SpeakerPage'
+    else
+      super
+    end
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/speakers_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sponsor.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sponsor.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sponsor.rb (added)
+++ labs/consite/trunk/conferences/app/models/sponsor.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,18 @@
+class Sponsor < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :organization
+  belongs_to :sponsor_type
+  belongs_to :conference
+  belongs_to :sponsor_level
+
+  def to_label
+    if organization
+      return "#{organization.name} @ #{conference.name}"
+    else
+      return super.to_s
+    end
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sponsor.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sponsor_level.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sponsor_level.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sponsor_level.rb (added)
+++ labs/consite/trunk/conferences/app/models/sponsor_level.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,8 @@
+class SponsorLevel < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  validates_presence_of :name
+  validates_uniqueness_of :name
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sponsor_level.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sponsor_type.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sponsor_type.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sponsor_type.rb (added)
+++ labs/consite/trunk/conferences/app/models/sponsor_type.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,10 @@
+class SponsorType < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  has_many :sponsors
+
+  validates_presence_of :name
+  validates_uniqueness_of :name
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sponsor_type.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sponsor_type_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sponsor_type_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sponsor_type_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/sponsor_type_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,31 @@
+class SponsorTypePage < Page
+  include ConferenceTags
+
+  before_validation {|r| r.virtual = true }
+
+  def virtual?
+    true
+  end
+
+  def render
+    lazy_initialize_parser_and_context
+    type_name = get_type_from_url.singularize.humanize.titlecase
+    @context.globals.sponsor_type = SponsorType.find_by_name(type_name)
+    super
+  end
+
+  desc %{ Prints the name of the current sponsor type }
+  tag "sponsor_type_name" do |tag|
+    tag.globals.sponsor_type.name
+  end
+
+  private
+    def request_uri
+      request.request_uri unless request.nil?
+    end
+
+   def get_type_from_url
+      $1 if request_uri =~ %r{#{parent.url}/?(\w+)/?$}
+   end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sponsor_type_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/sponsors_page.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/sponsors_page.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/sponsors_page.rb (added)
+++ labs/consite/trunk/conferences/app/models/sponsors_page.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,25 @@
+class SponsorsPage < Page
+  include ConferenceTags
+
+
+  def find_by_url(url, live=true,clean=false)
+    url = clean_url(url) if clean
+    if url =~ %r{#{self.url}(\w+)}
+      prefix = $1
+      children.find_by_class_name 'SponsorTypePage'
+    else
+      super
+    end
+  end
+
+  private
+    def request_uri
+      request.request_uri unless request.nil?
+    end
+
+   def get_conference_from_url
+     m = request_uri.match /^\/([^\/]*)\/.*$/
+     m[1] if m
+   end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/sponsors_page.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/submission.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/submission.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/submission.rb (added)
+++ labs/consite/trunk/conferences/app/models/submission.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,78 @@
+require 'fastercsv'
+class Submission < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :presentation
+  belongs_to :conference
+  has_many   :scheduled_sessions
+  has_many   :panel_members
+  
+  validates_presence_of :presentation
+  validates_presence_of :conference 
+
+  after_create :send_notification
+  after_update :update_agreement_form_received
+#  do we want to check if they've already submitted a presentation to a conference?
+#  validates_uniqueness_of :presentation, :scope => [:conference_id]
+
+  extend ActionView::Helpers::SanitizeHelper
+
+  def self.to_csv(collection)
+    field_names = %w(Conference Name Presenter Email Type Duration Status Scheduled)
+    header_row = FasterCSV::Row.new(field_names, field_names, true)
+    table = FasterCSV::Table.new([header_row])
+    collection.each do |sub|
+      scheduled = sub.scheduled_sessions.collect {|ss| ss.start_time_local.to_formatted_s(:short)}
+      table << [
+          sub.conference.name,
+          sub.presentation.name,
+          sub.presenter.name,
+          sub.presenter.email,
+          sub.presentation.type.name,
+          sub.presentation.duration,
+          sub.accepted?,
+          scheduled.join(';')
+#          strip_tags(sub.presentation.description),
+#          strip_tags(sub.presentation.presenter.notes)
+        ]
+    end
+    table.to_csv
+  end
+
+  def presenter
+    self.presentation ? self.presentation.presenter : nil    
+  end
+  
+  def name
+    self.presentation ? self.presentation.name : nil
+  end
+
+  def to_label
+    "#{self.name} to #{self.conference ? self.conference.name : 'UNSPECIFIED CONFERENCE'}"
+  end
+  
+  def new_presentation_attributes=(presentation_attributes)
+    params = presentation_attributes.first
+    self.presentation = Presentation.new
+    self.presentation.build( params )
+  end
+  
+  def existing_presentation_attributes=(presentation_attributes)
+    params = presentation_attributes[self.presentation.id.to_s]
+    self.presentation.update_attributes(params)
+    self.presentation.save
+  end
+
+  def send_notification
+    if conference && !conference.submission_notification_email.blank?
+      SubmissionNotifier.deliver_notification(:submission => self, :to => conference.submission_notification_email)
+    end
+  end
+
+  def update_agreement_form_received
+    presentation_ids = presentation.presenter.presentation_ids
+    Submission.update_all({:agreement_form_received => agreement_form_received}, 
+                        :conference_id => conference_id, :presentation_id => presentation_ids)
+  end
+end

Propchange: labs/consite/trunk/conferences/app/models/submission.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/submission_notifier.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/submission_notifier.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/submission_notifier.rb (added)
+++ labs/consite/trunk/conferences/app/models/submission_notifier.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,9 @@
+class SubmissionNotifier < ActionMailer::Base
+  include ActionController::UrlWriter
+  
+  def notification(options={})
+    @from = "notification@apachecon.com"
+    @to = options[:to]
+    @body = options
+  end
+end
\ No newline at end of file

Propchange: labs/consite/trunk/conferences/app/models/submission_notifier.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/track.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/track.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/track.rb (added)
+++ labs/consite/trunk/conferences/app/models/track.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,60 @@
+class Track < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  belongs_to :conference
+  belongs_to :location
+  has_many   :scheduled_sessions, :order => ["start_time"]
+  has_many   :activities, :order => ["start_time"]
+
+  validates_presence_of :name, :date, :conference, :location
+  validates_uniqueness_of :date, :scope => [:conference_id, :location_id]
+
+  def to_label
+    "#{name} [#{date.strftime('%a %b %d')}]"
+  end
+
+  def validate
+    if date > conference.end_date or date < conference.start_date
+      errors.add_to_base("The track date must be within the start and end dates of the conference")
+    end
+
+    unless conference.venue.locations.index(location)
+      errors.add_to_base("The track location must be a location at the conference venue.")
+    end
+  end
+
+  def all_events
+    events = []
+    events << self.scheduled_sessions
+    events << self.activities
+    events << self.conference.cross_track_activities( self.date )
+    events.flatten!
+    events.sort do |a,b|
+      a.start_time <=> b.start_time
+    end
+  end
+
+  def events_starting_in_slot(start_time, end_time)
+    conditions = ["track_id = ? and (start_time >= ? and start_time < ?)",id,start_time, end_time]
+    events = []
+    events << ScheduledSession.find(:all,:conditions => conditions)
+    events << Activity.find(:all, :conditions => conditions)
+    events << conference.cross_track_activities_in_range( start_time, end_time )
+    events.flatten!
+    events.sort do |a,b|
+      a.start_time <=> b.start_time
+    end
+  end
+
+  def events_in_slot?(start_time, end_time)
+    conditions = ["track_id = ? and (start_time <= ? and end_time > ?)",id,end_time, start_time]
+    events = []
+    events << ScheduledSession.find(:all,:conditions => conditions)
+    events << Activity.find(:all, :conditions => conditions)
+    events << conference.cross_track_activities_in_range( start_time, end_time, true )
+    events.flatten!
+    events.size > 0
+  end
+
+end

Propchange: labs/consite/trunk/conferences/app/models/track.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/models/venue.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/models/venue.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/models/venue.rb (added)
+++ labs/consite/trunk/conferences/app/models/venue.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,10 @@
+class Venue < ActiveRecord::Base
+
+  acts_as_cache_clearing
+
+  has_many :locations, :dependent => :destroy
+  has_many :conferences
+
+  validates_presence_of :name
+
+end

Propchange: labs/consite/trunk/conferences/app/models/venue.rb
------------------------------------------------------------------------------
    svn:eol-style = native

Added: labs/consite/trunk/conferences/app/views/admin/con/cfp/_presentation.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/cfp/_presentation.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/cfp/_presentation.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/cfp/_presentation.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,51 @@
+<% new_or_existing = presentation.new_record? ? 'new' : 'existing' %> 
+<% prefix = "submission[#{new_or_existing}_presentation_attributes][]" %> 
+<% fields_for prefix, presentation do | form | -%>
+
+  <p class="title">
+   <label>Presentation Name</label>
+   <%= form.text_field :name, :class => 'textbox' %>
+  </p>
+  <p>&nbsp;</p>
+
+  <div id="tab-control">
+  <div id="tabs" class="tab"> 
+   <div id="tab-toolbar"><strong><em>250 Words, Plain Text Only</em></strong></div>  
+   <label class="tab here">Abstract</label>
+  </div></div>
+
+  <div id="pages" class="pages">
+   <div class="page"><div class="part">
+
+       <div><%= form.text_area :description, :class => 'textarea', :style => 'width:100%;' %></div>
+   </div></div>
+  </div>
+
+  <p>&nbsp;</p>
+
+ <table style="cellspacing:10px;">
+  <tr>
+   <td><label>Type</label></td>
+   <td><%= form.select :type_id, PresentationType.find(:all).collect {|p| [ p.name, p.id ] } %></td>
+  </tr>
+  <tr>
+   <td><label>Duration</label></td>
+   <td><%= form.select :duration, [['60 minutes',60],['3 hours',180],['6 hours',180],['12 hours',180]] %></td>
+  </tr>
+  <%  unless presentation.new_record?  %>
+  <tr>
+   <td><label>Slides</label></td>
+   <td><%= file_column_field "submission[#{new_or_existing}_presentation_attributes][#{presentation.new_record? ? '' : presentation.id}]", "materials" %>
+      <% if presentation.materials %>
+          Current: <%= link_to presentation.materials.split('/').last, url_for_file_column(presentation, "materials", :absolute => "true") %>&nbsp;&nbsp;
+      <% end %>
+      <em>(Optional)</em></td>
+  </tr> 
+  <% end %> 
+ </table>
+
+  <p>&nbsp;</p>
+
+ <%= form.hidden_field :id %>
+ <%= form.hidden_field :presenter_id %>
+<% end -%>

Added: labs/consite/trunk/conferences/app/views/admin/con/cfp/_submission.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/cfp/_submission.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/cfp/_submission.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/cfp/_submission.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,25 @@
+<div class="form-area">
+ <% form_for(@submission, :url => {:action => action}, :html => {:multipart => true})  do |f| %>
+   <%= render :partial => 'presentation', :object => @submission.presentation %>
+
+
+  <div id="tab-control">
+  <div id="tabs" class="tab"> 
+   <div id="tab-toolbar"><strong><em>Special Needs/Equipment, Availability, etc.</em></strong></div>  
+   <label class="tab here">Additional Comments</label>
+  </div></div>
+
+  <div id="pages" class="pages">
+   <div class="page"><div class="part">
+       <div><%= f.text_area :comments, :class => 'textarea', :style => 'width:100%;' %></div>
+   </div></div>
+  </div>
+
+  <div>
+   <br/><br/>
+   <%= f.hidden_field :conference_id %>
+   <%= f.hidden_field :id %>
+   <%= f.submit "Submit Presentation" %> &nbsp; &nbsp; <%= link_to "Cancel", :action => 'index' %>
+  </div>
+ <% end %>
+</div>

Added: labs/consite/trunk/conferences/app/views/admin/con/cfp/edit.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/cfp/edit.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/cfp/edit.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/cfp/edit.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,3 @@
+<h1>Edit Submission</h1>
+<%= render :partial => 'submission', :locals => {:action => 'update'} %>
+

Added: labs/consite/trunk/conferences/app/views/admin/con/cfp/index.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/cfp/index.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/cfp/index.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/cfp/index.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,42 @@
+
+ <h1>Conference Presentation Submissions</h1>
+
+<% @submissions_per_conference.each do | c | %>
+<%
+   conference = c[0]
+   submissions = c[1]
+%>
+
+ <h3><%= conference.name %> [<%= conference.start_date.to_formatted_s(:rfc822) %>]</h3>
+   <table class='index'>
+    <thead>
+     <th>Submission Name</th>
+     <th>Accepted</th>
+     <th>Scheduled</th>
+    </thead>
+   <% submissions.each do |submission| %>
+
+     <tr class='level-0 no-children node'>
+       <td class='page'><span class='title'>
+        <%= link_to submission.presentation.name, :action => 'edit', :id => submission.id %>
+       </span></td>
+       <td><%= submission.accepted ? 'Yes' : 'No' %></td>
+       <td>
+         <% submission.scheduled_sessions.each do | ss | %>
+            <%= ss.track.date.to_formatted_s(:short) %> <%= ss.start_time_local.to_formatted_s(:time) %>
+         <% end %>
+       </td>
+      </tr>
+
+   <% end %>
+   <% if conference.cfp_open %>
+     <tr class='level-0 no-children node'>
+      <Td class='page'><span class='title'>
+          <%= link_to "Submit new presentation", :action => 'new', :cid => conference.id %>
+      </span></td>
+      <td></td><td></td>
+     </tr>
+   <% end %>
+   </table>
+
+<% end  %>

Added: labs/consite/trunk/conferences/app/views/admin/con/cfp/new.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/cfp/new.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/cfp/new.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/cfp/new.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,19 @@
+<% if @presentations.size > 0 %>
+<h1>Previous Submissions</h1>
+<div class="form-area">
+<p>
+You may resubmit a previous presentation to the conference.
+</p>
+<% form_for :submission, :url => {:action => 'create'} do |f| %>
+ <%= f.error_messages %>
+ <%= f.select "presentation_id" ,@presentations.collect {|p| [ p.name, p.id ] } %>
+ <%= f.hidden_field :conference_id %><br/><br/>
+ <%= f.submit "Submit presentation"%>
+<% end %>
+</div>
+<% end %>
+<br/><br/>
+
+<h1>New Submission</h1>
+<%= render :partial => 'submission', :locals => {:action => 'create'} %>
+

Added: labs/consite/trunk/conferences/app/views/admin/con/conference_roles/compose.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/conference_roles/compose.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/conference_roles/compose.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/conference_roles/compose.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,33 @@
+- form_for(@email,:url => {:controller => 'admin/con/conference_roles', :action => 'email'}) do |f|
+
+  %div{:class => 'form-area'}
+    %h2 Compose Email
+
+    %p{:class => 'title'}
+      %label To
+      = select 'email', 'recipient', @email.recipients.collect {|r| [r,r]}
+
+    %br
+
+    %p{:class => 'title'}
+      %label Subject
+      = f.text_field 'subject', :class=> 'textbox'
+
+    %br
+
+    #tab-control
+      #tabs{:class=>'tabs'}
+        %a{:href=>'#', :class=>'tab here'}
+          %span Body
+      #pages{:class=>'pages'}
+        #page-1{:class=>'page'}
+          #part-1{:class=>'part'}
+            %div
+              = f.text_area 'body', :style => 'width:100%;', :class=>'textarea'
+
+
+  %p{:class=>'buttons'}
+    = f.hidden_field 'conference_id'
+    %input{:type=>'button', :class=>'submit', :value=>'Send'}
+    or
+    %a{ :href=>"#"} Cancel

Added: labs/consite/trunk/conferences/app/views/admin/con/conference_roles/report.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/conference_roles/report.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/conference_roles/report.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/conference_roles/report.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,18 @@
+%p#links
+  = link_to "&laquo; Back to list", :action => 'index', :con_id => params[:con_id]
+  = link_to "Download CSV", :format => 'csv', :con_id => params[:con_id]
+
+%table.report
+  %thead
+    %tr
+      %th Name
+      %th Uploaded Photo
+      %th Agreement Form Received
+      %th Uploaded Materials
+  %tbody
+    - @conference_roles.each_with_index do |role, index|
+      %tr{:class => index % 2 == 0 ? 'even': 'odd'}[role]
+        %td.name= h role.to_label
+        %td.photo= image_tag 'icons/tick.png' if role.presenter && role.presenter.photo?
+        %td.agreement= image_tag 'icons/tick.png' if role.event.respond_to?(:submission) && role.event.submission.agreement_form_received?
+        %td.materials= image_tag 'icons/tick.png' if role.event.respond_to?(:submission) && role.event.submission.presentation.materials?
\ No newline at end of file

Added: labs/consite/trunk/conferences/app/views/admin/con/dashboard/help.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/dashboard/help.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/dashboard/help.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/dashboard/help.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,37 @@
+<hr/>
+<h1>Help</h1>
+
+<h2>Terminology</h2>
+
+<img src="/images/conferences/help_model.png" alt="Simple Model Diagram"/>
+
+<p>
+  <em>Conferences</em> are held at a <em>venue</em> which has one or
+  more <em>locations.</em>  A conference may have one or
+  more <em>tracks</em> which take place on a single conference day at
+  a venue location.
+</p>
+<p>
+  A <em>person</em> can create one or more <em>presentations</em>.
+  Presentations are then <em>submitted</em> to a conference, creating
+  a <em>presentation submission</em> (via the CFP process).  A
+  presentation can be submitted to more than one conference, but each
+  submission is recorded seperately.  A presentation can then
+  be <em>scheduled</em> by assigning a start and end time during a
+  specified conference track.  Presentation types are matched to
+  conference <em>capacities</em>, resulting in a
+  person's <em>role</em> at a given conference.  That is, when one
+  schedules a session at a conference, the session presenter becomes a
+  conference <code>speaker</code>.  Likewise, scheduling a training
+  results in the presenter becoming a <code>trainer</code>.  <em>Panel
+  members</em> can be added to any submission, thus allowing more than
+  one presenter to be associated with a given presentation.
+</p>
+<p>
+  In addition to scheduled sessions, conferences can
+  have <em>activities</em> which are more free-form events that may or
+  may not have a person or track associated with them.  <em>NOTE:<em>
+  Activities which do not have an associated track are considered to
+  run across <em>all</em> tracks at that given time slot.
+</p>
+

Added: labs/consite/trunk/conferences/app/views/admin/con/dashboard/index.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/dashboard/index.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/dashboard/index.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/dashboard/index.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,130 @@
+
+<%
+  if @current_conference
+     con_id = @current_conference.id
+     table_class = " "
+  else
+     con_id = -1
+     table_class = "disabled"
+  end
+%>
+
+<style>
+  .disabled {
+     color:#cccccc;
+   }
+   .disabled a {
+     color:#cccccc;
+   }
+</style>
+
+
+<table class="index <%= table_class %>">
+  <thead>
+    <tr>
+     <th>Manage</th>
+     <th>Description</th>
+    </tr>
+  </thead>
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Conference Details", :controller => 'admin/con/conferences',
+        :action => 'edit', :_method => 'get', :con_id => con_id %></td>
+   <td class="">Edit conference details such as dates, venue and short description.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Tracks", :controller => 'admin/con/tracks', :con_id => @current_conference.id %></td>
+   <td class="">Define conference tracks.  Tracks have a date and a location at the venue.</td>
+  </tr>
+
+
+  <tr class="level-0 no-children node">
+    <td class="page"><%= link_to "Submissions", :controller => 'admin/con/submissions', :con_id => @current_conference.id %></td>
+   <td class="">Review all presentation submissions for this conference.</td>
+  </tr>
+
+<!--  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Schedule", :controller => 'admin/con/scheduled_sessions', :con_id => @current_conference.id %></td>
+   <td class="">Manage the scheduled conference sessions.</td>
+  </tr>
+-->
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Activities", :controller => 'admin/con/activities', :con_id => @current_conference.id %></td>
+   <td class="">Schedule special activities (breaks, BoFs, keynotes...).</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Speakers", :controller => 'admin/con/conference_roles', :con_id => con_id %></td>
+   <td class="">Manage speakers for this conference.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Sponsors", :controller => 'admin/con/sponsors', :con_id => con_id %></td>
+   <td class="">Manage conference sponsor list.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Help", :action => 'help', :con_id => con_id %></td>
+   <td class="">Instructions.</td>
+  </tr>
+
+</table>
+
+
+
+
+<h4 style="padding-top:40px;">Global Configuration</h4>
+
+<table class="index">
+  <thead>
+    <tr>
+     <th>Manage</th>
+     <th>Description</th>
+    </tr>
+  </thead>
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Venues", :controller => 'admin/con/venues' %></td>
+   <td class="">Edit venue addresses and room names.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Presentation Types", :controller => 'admin/con/presentation_types' %></td>
+   <td class="">Define the types of sessions for any conference.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Sponsor Types", :controller => 'admin/con/sponsor_types' %></td>
+   <td class="">Define the type of sponsors for any conference</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Sponsor Levels", :controller => 'admin/con/sponsor_levels' %></td>
+   <td class="">Define the sponsor classes (i.e.- ranks) for any conference</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "All User Accounts", :controller => 'admin/con/users'%></td>
+   <td class="">Browse and manage all user accounts and speaker information for all conferences.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "All Organizations", :controller => 'admin/con/organizations'%></td>
+   <td class="">Edit all sponsorship organizations.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "All Presentations", :controller => 'admin/con/presentations'%></td>
+   <td class="">Browse all presentations for any conference.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "All Conferences", :controller => 'admin/con/conferences'%></td>
+   <td class="">Browse all conferences.</td>
+  </tr>
+
+</table>
+
+
+
+

Added: labs/consite/trunk/conferences/app/views/admin/con/schedule/index.html.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/schedule/index.html.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/schedule/index.html.erb (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/schedule/index.html.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,32 @@
+
+<h2>Schedule Management</h2>
+
+<table class="index">
+  <thead>
+    <tr>
+     <th>Manage</th>
+     <th>Description</th>
+    </tr>
+  </thead>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Tracks", :controller => 'admin/con/tracks', :con_id => @current_conference.id %></td>
+   <td class="">Define conference tracks.  Tracks have a date and a location at the venue.</td>
+  </tr>
+
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Submitted Presentations", :controller => 'admin/con/submissions', :con_id => @current_conference.id %></td>
+   <td class="">Review all presentation submissions for this conference.</td>
+  </tr>
+
+  <tr class="level-0 no-children node">
+   <td class="page"><%= link_to "Scheduled Sessions", :controller => 'admin/con/scheduled_sessions', :con_id => @current_conference.id %></td>
+   <td class="">Manage the scheduled conference sessions.</td>
+  </tr>
+
+</table>
+
+
+
+

Added: labs/consite/trunk/conferences/app/views/admin/con/submissions/report.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/admin/con/submissions/report.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/admin/con/submissions/report.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/admin/con/submissions/report.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,21 @@
+%p#links
+  = link_to "&laquo; Back to list", :action => 'index', :con_id => params[:con_id]
+  = link_to "Download CSV", :format => 'csv', :con_id => params[:con_id]
+
+- @submissions.each do |submission|
+  %div.page[submission]
+    %h1
+      %strong= submission.presentation.name
+      %em
+        = surround('[',']') do
+          = submission.conference.name
+    %h2== by #{submission.presenter}
+    %p
+      = submission.presentation.type.name
+      &mdash;
+      = submission.presentation.duration
+      minutes
+    %h3 Description
+    = submission.presentation.description
+    %h3 Presenter Bio
+    = submission.presentation.presenter.notes
\ No newline at end of file

Added: labs/consite/trunk/conferences/app/views/layouts/cfp.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/layouts/cfp.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/layouts/cfp.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/layouts/cfp.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,57 @@
+!!!
+%html{html_attrs}
+  %head
+    %meta{"http-equiv"=>"Content-type", :content=>"text/html; charset=utf-8"}/
+    %title= @page_title || default_page_title
+    - @stylesheets.uniq.each do |stylesheet|
+      = stylesheet_link_tag stylesheet
+    - @javascripts.uniq.each do |javascript|
+      = javascript_include_tag javascript
+    = javascript_include_tag "extensions/conferences/tiny_mce_for_active_scaffold"
+    = active_scaffold_includes
+    /[if lt IE 7]
+      %script{:type=>"text/javascript", :src=>"/admin/javascripts/pngfix.js"}
+    - if @content_for_page_scripts
+      = javascript_tag @content_for_page_scripts
+    - if @content_for_page_css
+      %style{:type => "text/css"}= @content_for_page_css
+    = stylesheet_link_tag "extensions/conferences"
+  %body
+    #page
+      #header
+        #site-title= link_to_unless_current title, admin_url
+        #site-subtitle= subtitle
+        - if logged_in?
+          #navigation= links_for_navigation
+      %hr{:class=>"hidden"}/
+      #main
+        - if flash[:notice]
+          #notice
+            %p= flash[:notice]
+        - if flash[:error]
+          #error
+            %p= flash[:error]
+        #content
+          = yield
+      %hr{:class=>"hidden"}/
+      #footer
+        %p
+          This site was made with Ruby and is powered by
+          %a{:href=>"http://radiantcms.org"} Radiant CMS
+          version
+          = Radiant.loaded_via_gem? ? "#{Radiant::Version} (gem)." : "#{Radiant::Version}."
+        %p#site-links
+          - if logged_in?
+            - if admin?
+              = nav_link_to 'Users', user_index_url
+              %span.separator=" | "
+              = nav_link_to 'Extensions', extension_index_url
+            - else
+              = nav_link_to 'Preferences', user_preferences_url
+            %span.separator=" | "
+            = nav_link_to 'Log Out', logout_url
+            %span.separator=" | "
+            = link_to image('view-site.gif', :alt => "View Site", :title => ''), homepage_url
+      - if @content_for_popups
+        #popups
+          = yield :popups

Added: labs/consite/trunk/conferences/app/views/layouts/conferences.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/layouts/conferences.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/layouts/conferences.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/layouts/conferences.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,85 @@
+!!!
+%html{html_attrs}
+  %head
+    %meta{"http-equiv"=>"Content-type", :content=>"text/html; charset=utf-8"}/
+    %title= @page_title || default_page_title
+    - @stylesheets.uniq.each do |stylesheet|
+      = stylesheet_link_tag stylesheet
+    = javascript_include_tag "extensions/tiny_mce/tiny_mce"
+    = javascript_include_tag "extensions/tiny_mce/tiny_mce_settings"
+    - @javascripts.uniq.each do |javascript|
+      = javascript_include_tag javascript
+    = javascript_include_tag "application"
+    = active_scaffold_includes
+    /[if lt IE 7]
+      %script{:type=>"text/javascript", :src=>"/admin/javascripts/pngfix.js"}
+    - if @content_for_page_scripts
+      = javascript_tag @content_for_page_scripts
+    - if @content_for_page_css
+      %style{:type => "text/css"}= @content_for_page_css
+    = stylesheet_link_tag "extensions/conferences"
+  %body
+    #page
+      #header
+        #site-title= link_to_unless_current title, admin_url
+        #site-subtitle= subtitle
+        - if logged_in?
+          #navigation= links_for_navigation
+      %hr{:class=>"hidden"}/
+      #main
+        - if flash[:notice]
+          #notice
+            %p= flash[:notice]
+        - if flash[:error]
+          #error
+            %p= flash[:error]
+        #content
+          #conference_header
+            #conference_navigation{:style=>"float:right; padding:0px; margin-top:-10px;"}
+              - if @controller.controller_name =~ /dashboard/
+                %p
+                  = select "current_conference", "id", @conferences.collect {|c| [ c.name, c.id ] }, {}, { :onchange => "document.location = '/admin/con/dashboard/index/'+$('current_conference_id').value" }
+                  |
+                  = link_to(image_tag('conferences/calendar_plus.png', :alt => 'Add a new conference'), :controller => 'admin/con/conferences', :action => 'new', :_method => 'get')
+              - else
+                %p
+                  = link_to image_tag('conferences/arrow_180.png', :alt => 'Return to dashboard'), :controller => 'admin/con/dashboard', :action => 'index', :id => @current_conference.id
+                  - if @controller.controller_name =~ /conference_roles|submissions/
+                    = link_to image_tag('conferences/printer.png'), :action => 'report', :con_id => params[:con_id]
+                    = link_to image_tag('conferences/report.png'), :action => 'report', :format => 'csv',  :con_id => params[:con_id]
+                  - if @controller.controller_name =~ /conference_roles/
+                    = link_to image_tag('conferences/email.png'), :action => 'compose', :con_id => params[:con_id]
+            - if @current_conference
+              %h1= @current_conference.name
+              %h4
+                = @current_conference.start_date.to_date.to_formatted_s(:rfc822)
+                \-
+                = @current_conference.end_date.to_date.to_formatted_s(:rfc822)
+                @
+                = @current_conference.venue.name
+            - else
+              %h1 Conference Management
+              %h4 No conferences configured.  Create a new conference.
+          = yield
+      %hr{:class=>"hidden"}/
+      #footer
+        %p
+          This site was made with Ruby and is powered by
+          %a{:href=>"http://radiantcms.org"} Radiant CMS
+          version
+          = Radiant.loaded_via_gem? ? "#{Radiant::Version} (gem)." : "#{Radiant::Version}."
+        %p#site-links
+          - if logged_in?
+            - if admin?
+              = nav_link_to 'Users', user_index_url
+              %span.separator=" | "
+              = nav_link_to 'Extensions', extension_index_url
+            - else
+              = nav_link_to 'Preferences', user_preferences_url
+            %span.separator=" | "
+            = nav_link_to 'Log Out', logout_url
+            %span.separator=" | "
+            = link_to image('view-site.gif', :alt => "View Site", :title => ''), root_url
+      - if @content_for_popups
+        #popups
+          = yield :popups

Added: labs/consite/trunk/conferences/app/views/layouts/configuration.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/layouts/configuration.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/layouts/configuration.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/layouts/configuration.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,62 @@
+!!!
+%html{html_attrs}
+  %head
+    %meta{"http-equiv"=>"Content-type", :content=>"text/html; charset=utf-8"}/
+    %title= @page_title || default_page_title
+    - @stylesheets.uniq.each do |stylesheet|
+      = stylesheet_link_tag stylesheet
+    = javascript_include_tag "extensions/tiny_mce/tiny_mce"
+    - @javascripts.uniq.each do |javascript|
+      = javascript_include_tag javascript
+    = javascript_include_tag "extensions/conferences/tiny_mce_for_active_scaffold"
+    = active_scaffold_includes
+    /[if lt IE 7]
+      %script{:type=>"text/javascript", :src=>"/admin/javascripts/pngfix.js"}
+    - if @content_for_page_scripts
+      = javascript_tag @content_for_page_scripts
+    - if @content_for_page_css
+      %style{:type => "text/css"}= @content_for_page_css
+    = stylesheet_link_tag "extensions/conferences"
+  %body
+    #page
+      #header
+        #site-title= link_to_unless_current title, admin_url
+        #site-subtitle= subtitle
+        - if logged_in?
+          #navigation= links_for_navigation
+      %hr{:class=>"hidden"}/
+      #main
+        - if flash[:notice]
+          #notice
+            %p= flash[:notice]
+        - if flash[:error]
+          #error
+            %p= flash[:error]
+        #content
+          #conference_header
+            #conference_navigation{:style=>"float:right; padding:0px; margin-top:-10px;"}
+              = link_to image_tag('conferences/arrow_180.png', :alt => 'Return to dashboard'), :controller => 'admin/con/dashboard'
+            %h1 Configuration
+          = yield
+      %hr{:class=>"hidden"}/
+      #footer
+        %p
+          This site was made with Ruby and is powered by
+          %a{:href=>"http://radiantcms.org"} Radiant CMS
+          version
+          = Radiant.loaded_via_gem? ? "#{Radiant::Version} (gem)." : "#{Radiant::Version}."
+        %p#site-links
+          - if logged_in?
+            - if admin?
+              = nav_link_to 'Users', user_index_url
+              %span.separator=" | "
+              = nav_link_to 'Extensions', extension_index_url
+            - else
+              = nav_link_to 'Preferences', user_preferences_url
+            %span.separator=" | "
+            = nav_link_to 'Log Out', logout_url
+            %span.separator=" | "
+            = link_to image('view-site.gif', :alt => "View Site", :title => ''), root_url
+      - if @content_for_popups
+        #popups
+          = yield :popups

Added: labs/consite/trunk/conferences/app/views/layouts/report.html.haml
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/layouts/report.html.haml?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/layouts/report.html.haml (added)
+++ labs/consite/trunk/conferences/app/views/layouts/report.html.haml Fri Mar 27 10:32:54 2009
@@ -0,0 +1,11 @@
+!!!
+%html{html_attrs}
+  %head
+    %title
+      Report:
+      = report_title
+    = stylesheet_link_tag 'report'
+    = stylesheet_link_tag 'report-print', :media => 'print'
+    = javascript_include_tag 'prototype'
+  %body
+    = yield
\ No newline at end of file

Added: labs/consite/trunk/conferences/app/views/submission_notifier/notification.erb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/app/views/submission_notifier/notification.erb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/app/views/submission_notifier/notification.erb (added)
+++ labs/consite/trunk/conferences/app/views/submission_notifier/notification.erb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,5 @@
+The following submission was received at <%= @submission.created_at.to_s(:rfc822) %>:
+
+Conference: <%= @submission.conference.name %>
+Presenter: <%= @submission.presenter %>
+Title: <%= @submission.name %>
\ No newline at end of file

Added: labs/consite/trunk/conferences/conferences_extension.rb
URL: http://svn.apache.org/viewvc/labs/consite/trunk/conferences/conferences_extension.rb?rev=759091&view=auto
==============================================================================
--- labs/consite/trunk/conferences/conferences_extension.rb (added)
+++ labs/consite/trunk/conferences/conferences_extension.rb Fri Mar 27 10:32:54 2009
@@ -0,0 +1,94 @@
+# Uncomment this if you reference any of your controllers in activate
+# require_dependency 'application'
+
+require File.dirname(__FILE__) + "/lib/acts_as_cache_clearing"
+
+class ConferencesExtension < Radiant::Extension
+  version "1.0"
+  description "Manage conference events, speakers, presentations and tracks."
+  url "http://cubiclemuses.com/cm"
+
+  define_routes do |map|
+    map.connect 'admin/con', :controller => 'admin/con/dashboard'
+    map.connect 'admin/con/conferences/:action', :controller => 'admin/con/conferences'
+    map.connect 'admin/con/venues/:action', :controller => 'admin/con/venues'
+    map.connect 'admin/con/locations/:action', :controller => 'admin/con/locations'
+    map.connect 'admin/con/organizations/:action', :controller => 'admin/con/organizations'
+    map.connect 'admin/con/sponsor_types/:action', :controller => 'admin/con/sponsor_types'
+    map.connect 'admin/con/sponsor_levels/:action', :controller => 'admin/con/sponsor_levels'
+    map.connect 'admin/con/presentation_types/:action', :controller => 'admin/con/presentation_types'
+    map.connect 'admin/con/session_types/:action', :controller => 'admin/con/session_types'
+    map.connect 'admin/con/users/:action', :controller => 'admin/con/users'
+    map.connect 'admin/con/cfp/:action', :controller => 'admin/con/cfp'    
+    map.connect 'admin/con/presentations/:action', :controller => 'admin/con/presentations'
+
+    map.connect 'admin/con/:con_id/dashboard/:action/:id', :controller => 'admin/con/dashboard'
+    map.connect 'admin/con/:con_id/activities/:action', :controller => 'admin/con/activities'
+    map.connect 'admin/con/:con_id/conference_roles/:action', :controller => 'admin/con/conference_roles'
+    map.connect 'admin/con/:con_id/conference_roles/:action.:format', :controller => 'admin/con/conference_roles'
+    map.connect 'admin/con/:con_id/panel_members/:action', :controller => 'admin/con/panel_members'
+    map.connect 'admin/con/:con_id/schedule/:action', :controller => 'admin/con/schedule'
+    map.connect 'admin/con/:con_id/scheduled_sessions/:action', :controller => 'admin/con/scheduled_sessions'
+    map.connect 'admin/con/:con_id/speakers/:action', :controller => 'admin/con/speakers'
+    map.connect 'admin/con/:con_id/sponsors/:action', :controller => 'admin/con/sponsors'
+    map.connect 'admin/con/:con_id/submissions/:action', :controller => 'admin/con/submissions'
+    map.connect 'admin/con/:con_id/submissions/:action.:format', :controller => 'admin/con/submissions'
+    map.connect 'admin/con/:con_id/tracks/:action', :controller => 'admin/con/tracks'
+  end
+
+  def activate
+    
+    admin.tabs.add "Conferences", "/admin/con", :before => "Pages", :visibility => [:developer, :admin]
+    admin.tabs.add "Submissions", "/admin/con/cfp", :before => "Conferences", :visibility => [:all]    
+
+    ActiveRecord::Base.send(:include, Con::CacheClearing)
+    Page.send :include, ConferenceTags    
+    
+    User.class_eval {
+
+      acts_as_cache_clearing      
+      
+      has_many :conference_roles, :foreign_key => 'presenter_id'
+      has_many :conferences, :through => :conferences_roles, :foreign_key => 'presenter_id'
+      has_many :presentations, :foreign_key => 'presenter_id'
+      has_many :panel_members
+      has_many :submissions, :through => :presentations
+      has_many :activities
+
+      def scheduled_sessions(conference=nil, include_panels=true)
+        sessions = [ ]
+        conference_roles.each do |role|
+          inc = true
+          if conference
+            inc = role.conference == conference
+          end
+          
+          case role.session
+            when ScheduledSession then sessions << role.session if inc
+            when PanelMember
+              if include_panels and inc
+                sessions << role.session.submission.scheduled_session
+              end
+           end
+         end
+        return sessions
+      end  
+      
+    }
+
+
+    SpeakersPage
+    SpeakerPage
+    SponsorsPage
+    SponsorTypePage
+    SchedulePage
+    ScheduleDayPage
+    SessionsPage
+    SessionPage
+  end
+
+  def deactivate
+     admin.tabs.remove "Conferences"
+  end
+
+end

Propchange: labs/consite/trunk/conferences/conferences_extension.rb
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org