       TaskPlanActions.delete(id)
       @context.router.transitionTo('taskplans', {courseId})
 
+  onSave: ->
+    @setState({saving: true, publishing: false})
+    @props.onSave()
+
+  onPublish: ->
+    @setState({publishing: true, saving: false})
+    @props.onPublish()
+
   onCancel: ->
     {id, courseId} = @props
     if confirm('Are you sure you want to cancel?')

        <AsyncButton
          bsStyle='primary'
          className='-publish'
          onClick={onPublish}
          isWaiting={isWaiting}
          isFailed={isFailed}
          waitingText='Publishing…'
          >

      saveLink =
          <AsyncButton
            className='-save'
            onClick={@onSave}
            isWaiting={isWaiting and @state.saving}
            isFailed={isFailed}
            waitingText='Saving…'
            >
