 
   onPublish: ->
     @setState({publishing: true, saving: false, isEditable: TaskPlanStore.isEditable(@props.id)})
-    @props.onPublish()
+
+    if TaskPlanStore.isPublished(@props.id)
+      @props.onPublish()
+    else
+      @props.onSave()
 
   onViewStats: ->
     {id, courseId} = @props


    if deleteable
      deleteLink =
        <AsyncButton
          className='delete-link pull-right'
          onClick={@onDelete}
          isWaiting={TaskPlanStore.isDeleting(id)}
          isFailed={isFailed}
          waitingText='Deleting…'
        >
          <i className="fa fa-trash"></i> Delete Assignment
        </AsyncButton>

    if saveable
      saveLink =


    saveable = not (TaskPlanStore.isPublished(id) or TaskPlanStore.isPublishing(id))
    isWaiting = TaskPlanStore.isSaving(id) or TaskPlanStore.isPublishing(id) or TaskPlanStore.isDeleteRequested(id)
    deleteable = not TaskPlanStore.isNew(id) and not isWaiting
    isFailed = TaskPlanStore.isFailed(id)

    tips = <BS.Popover id='plan-footer-popover'>
