Skip to content

Instantly share code, notes, and snippets.

@scottmessinger
Created October 25, 2010 21:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scottmessinger/645869 to your computer and use it in GitHub Desktop.
Save scottmessinger/645869 to your computer and use it in GitHub Desktop.
module CoursePresenters
class ShowPresenter < Presenter
include AvailableResourceTypes
available_types #this is how I initialize availabe_resource_types...there has to be a better way
include CanCan::Ability
def initialize(course, current_user)
@current_user = current_user || User.new
@course = Course.find(course)
@root_sequences = Sequence.root_sequences(@course.id).all
@units = Unit.find(@root_sequences.collect{|s| s.unit_id})
@resources = Resource.find(@course.resource_ids)
@resource_types = ResourceType.find(@course.resource_type_ids)
@activities = Activity.find(@course.activity_ids)
@assets = Asset.find(asset_ids)
end
delegate_attributes :@course, :prefix => 'course', :attributes => [:id, :title, :narrative_sidebar, :narrative_sidebar_flag, :narrative, :sequence_types]
delegate_attributes :@unit, :prefix => 'unit', :attributes => [:title, :narrative_sidebar_flag, :narrative_sidebar, :narrative]
def course
@course
end
def narratable
@course
end
def narratable_class
"Course"
end
def sidebar?
@course.narrative_sidebar_flag
end
def sidebar
@course.narrative_sidebar
end
def narrative
@course.narrative
end
def sequence_groups
@course.sequence_groups.sort_by(&:position)
end
def depth_label
@course.depth_label
end
def root_sequences
@root_sequences
end
def grouped_root_sequences(group_id=nil)
@root_sequences.select{|rs| rs.sequence_group_id == group_id}
end
def units
@units
end
def resources
@resources
end
def resourceable
@course
end
def resourceable_class
@course.class.to_s
end
def activities
@activities
end
def activable
@course
end
def activable_class
@course.class.to_s
end
def asset_ids
@activities.collect{|a| a.asset_ids}
end
def assets
@assets
end
def can_edit?
@current_user.can? :update, @course
end
def can_view?
@current_user.can? :read, @course
end
end #ShowPresenter
end #CoursePresenter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment