     leaderboardModal = new LeaderboardModal supermodel: @supermodel, levelSlug: levelSlug
     @openModalView leaderboardModal
 
+  isClassroom: -> @courseInstanceID?
+
   determineNextLevel: (orderedLevels) ->
-    if @courseStats?
-      @applyCourseLogicToLevels(orderedLevels)
+    if @isClassroom()
+      @applyCourseLogicToLevels(orderedLevels) if @courseStats?
       return true
 
 

      level.locked = true if level.requiresSubscription and @requiresSubscription and me.get('hourOfCode')
      level.locked = false if @levelStatusMap[level.slug] in ['started', 'complete']
      level.locked = false if @editorMode
      level.locked = false if not @course? and @campaign?.get('name') in ['Auditions', 'Intro']
      level.locked = false if me.isInGodMode()
      level.disabled = true if level.adminOnly and @levelStatusMap[level.slug] not in ['started', 'complete']
      level.disabled = false if me.isInGodMode()

      level.color = 'rgb(255, 80, 60)'
      unless @course? or @campaign?.get('type') is 'hoc'
        level.color = 'rgb(80, 130, 200)' if level.requiresSubscription and not features.codePlay
        level.color = 'rgb(200, 80, 200)' if level.adventurer


    levelPlayCountsRequest.load()

  onLoaded: ->
    if @isClassroom()
      @updateClassroomSessions()
    else
      unless @editorMode
        for session in @sessions.models
          unless @levelStatusMap[session.get('levelID')] is 'complete'  # Don't overwrite a complete session with an incomplete one
            @levelStatusMap[session.get('levelID')] = if session.get('state')?.complete then 'complete' else 'started'
          @levelDifficultyMap[session.get('levelID')] = session.get('state').difficulty if session.get('state')?.difficulty

    @buildLevelScoreMap() unless @editorMode
    # HoC: Fake us up a "mode" for HeroVictoryModal to return hero without levels realizing they're in a copycat campaign, or clear it if we started playing.
