82 lines
2.2 KiB
CoffeeScript
82 lines
2.2 KiB
CoffeeScript
context = window
|
||
|
||
@RescheduleLessonDialog = React.createClass({
|
||
|
||
mixins: [@PostProcessorMixin, Reflux.listenTo(@AppStore, "onAppInit")]
|
||
teacher: false
|
||
|
||
beforeShow: (args) ->
|
||
logger.debug("RescheduleLessonDialog.beforeShow", args.d1)
|
||
|
||
|
||
@setState({id: args.d1, lesson_session: null})
|
||
|
||
rest.getLesson({id: args.d1}).done((response) => @getLessonDone(response)).fail((jqXHR) => @getLessonFail(jqXHR))
|
||
|
||
getLessonDone: (lesson_session) ->
|
||
@postProcessLesson(lesson_session)
|
||
@setState({lesson_session: lesson_session})
|
||
|
||
getLessonFail: (jqXHR) ->
|
||
@app.ajaxError(jqXHR)
|
||
|
||
afterHide: () ->
|
||
|
||
onAppInit: (@app) ->
|
||
dialogBindings = {
|
||
'beforeShow': @beforeShow,
|
||
'afterHide': @afterHide
|
||
};
|
||
|
||
@app.bindDialog('reschedule-lesson-dialog', dialogBindings);
|
||
|
||
componentDidMount: () ->
|
||
@root = $(@getDOMNode())
|
||
|
||
getInitialState: () ->
|
||
{id: null, lesson_session: null}
|
||
|
||
onCloseClicked: (e) ->
|
||
e.preventDefault()
|
||
@app.layout.closeDialog('reschedule-lesson-dialog');
|
||
|
||
lesson: () ->
|
||
this.state.lesson_session
|
||
|
||
viewerStudent: () ->
|
||
@lesson().student.id == context.JK.currentUserId
|
||
|
||
viewerTeacher: () ->
|
||
!@viewerStudent()
|
||
|
||
|
||
render: () ->
|
||
|
||
title = 'loading...'
|
||
if this.state.lesson_session?
|
||
title = "reschedule lesson"
|
||
lessonSessionId = this.state.lesson_session.id
|
||
other = this.state.lesson_session.other
|
||
|
||
if @viewerStudent() && @sessionStartingSoon()
|
||
title = 'Policy Issue'
|
||
content =
|
||
`<div>
|
||
<p>We’re sorry, but you cannot reschedule a lesson less than 24 hours before the lesson start time. This is not allowed in the <a href="/corp/terms" target="_blank">terms of service</a> because the instructor cannot reasonably be expected to be able to backfill the time slot that has been lost.</p>
|
||
<div className="actions">
|
||
<a href="button-orange" onClick={this.onCloseClicked}>CLOSE</a>
|
||
</div>
|
||
</div>`
|
||
|
||
`<div className="RescheduleLessonTop">
|
||
<div className="content-head">
|
||
<img className="content-icon" src="/assets/content/icon_add.png" height={19} width={19}/>
|
||
|
||
<h1>{title}</h1>
|
||
</div>
|
||
<div className="dialog-inner">
|
||
|
||
</div>
|
||
</div>`
|
||
|
||
}) |