| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
54×
54×
54×
54×
54×
54×
54×
| var AsyncButton, BS, CourseActions, CourseStore, Icon, Name, React, TeacherRosterActions, TeacherRosterStore, WARN_REMOVE_CURRENT, _, ref, ref1;
React = require('react');
BS = require('react-bootstrap');
_ = require('underscore');
ref = require('../../flux/teacher-roster'), TeacherRosterStore = ref.TeacherRosterStore, TeacherRosterActions = ref.TeacherRosterActions;
ref1 = require('../../flux/course'), CourseStore = ref1.CourseStore, CourseActions = ref1.CourseActions;
Icon = require('../icon');
Name = require('../name');
AsyncButton = require('openstax-react-components').AsyncButton;
WARN_REMOVE_CURRENT = 'If you remove yourself from the course you will be redirected to the dashboard.';
module.exports = React.createClass({
displayName: 'RemoveTeacherLink',
propTypes: {
teacher: React.PropTypes.object.isRequired,
courseRoles: React.PropTypes.array.isRequired,
courseId: React.PropTypes.string.isRequired
},
contextTypes: {
router: React.PropTypes.func
},
isRemovalCurrentTeacher: function() {
var role;
return role = _.chain(this.props.courseRoles).pluck('id').contains(this.props.teacher.role_id).value();
},
goToDashboard: function() {
return TeacherRosterStore.once('deleted', (function(_this) {
return function() {
return _this.context.router.transitionTo('dashboard');
};
})(this));
},
performDeletion: function() {
var courseId;
courseId = this.props.courseId;
TeacherRosterActions["delete"](this.props.teacher.id, courseId);
if (this.isRemovalCurrentTeacher()) {
return this.goToDashboard();
} else {
return CourseActions.load(courseId);
}
},
confirmPopOver: function() {
var removeButton, title;
removeButton = React.createElement(AsyncButton, {
"bsStyle": 'danger',
"onClick": this.performDeletion,
"isWaiting": TeacherRosterStore.isDeleting(this.props.courseId),
"waitingText": 'Removing Instructor…'
}, React.createElement(Icon, {
"type": 'ban'
}), " Remove");
title = React.createElement("span", null, "Remove ", React.createElement(Name, React.__spread({}, this.props.teacher)), "?");
return React.createElement(BS.Popover, React.__spread({
"className": 'teacher-remove',
"title": title
}, this.props), removeButton, React.createElement("div", {
"className": 'warning'
}, (this.isRemovalCurrentTeacher() ? WARN_REMOVE_CURRENT : void 0)));
},
render: function() {
return React.createElement(BS.OverlayTrigger, {
"rootClose": true,
"trigger": 'click',
"placement": 'left',
"overlay": this.confirmPopOver()
}, React.createElement("a", null, React.createElement(Icon, {
"type": 'ban'
}), " Remove"));
}
});
|