@instructure/quiz-core 17.46.2-rc.5 → 17.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/es/banks/components/AddToBankModal/index.js +6 -0
- package/es/banks/components/AddToBankModal/presenter.js +128 -6
- package/es/banks/components/BankEntry/presenter.js +4 -3
- package/es/banks/components/BankEntryRow/presenter.js +1 -3
- package/es/building/api/items.js +21 -5
- package/es/building/api/stimuli.js +21 -5
- package/es/building/components/resources/ItemFeedbackModal/presenter.js +1 -4
- package/es/building/components/resources/quiz/instructions/Edit/presenter.js +1 -3
- package/es/building/components/resources/quiz/instructions/Show/index.js +1 -3
- package/es/building/components/resources/quizEntry/QuizEntry/presenter.js +1 -3
- package/es/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +1 -0
- package/es/common/actions/config.js +7 -1
- package/es/common/components/ConfirmationModal/presenter.js +1 -1
- package/es/common/components/SDKApp/index.js +10 -2
- package/es/common/components/layout/sidebar/SidebarItem/presenter.js +1 -3
- package/es/common/components/resources/entry/EntrySave/index.js +11 -5
- package/es/common/components/resources/entry/EntrySave/presenter.js +95 -21
- package/es/common/components/resources/item/ItemEdit/index.js +1 -2
- package/es/common/components/resources/item/ItemEdit/presenter.js +0 -2
- package/es/common/components/resources/item/ItemOverride/index.js +1 -2
- package/es/common/components/resources/item/ItemOverride/presenter.js +2 -4
- package/es/common/components/resources/quiz/instructions/Instructions.js +1 -3
- package/es/common/components/resources/sessionItemResult/ResultStimulus/index.js +1 -3
- package/es/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -7
- package/es/common/components/resources/stimulus/StimulusEdit/presenter.js +1 -0
- package/es/common/components/resources/stimulus/StimulusEditInfo/presenter.js +1 -3
- package/es/common/components/resources/stimulus/StimulusShowInfo/index.js +1 -3
- package/es/common/reducers/config.js +4 -1
- package/es/common/util/RceConfigProvider.js +51 -35
- package/es/common/util/interactionTypePropsHelper.js +2 -5
- package/es/common/util/rceChecker.js +1 -1
- package/es/common/util/windowChecks.js +6 -5
- package/es/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +1 -3
- package/lib/banks/components/AddToBankModal/index.js +9 -0
- package/lib/banks/components/AddToBankModal/presenter.js +135 -6
- package/lib/banks/components/BankEntry/presenter.js +4 -3
- package/lib/banks/components/BankEntryRow/presenter.js +1 -4
- package/lib/building/api/items.js +23 -5
- package/lib/building/api/stimuli.js +23 -5
- package/lib/building/components/resources/ItemFeedbackModal/presenter.js +1 -5
- package/lib/building/components/resources/quiz/instructions/Edit/presenter.js +1 -4
- package/lib/building/components/resources/quiz/instructions/Show/index.js +1 -4
- package/lib/building/components/resources/quizEntry/QuizEntry/presenter.js +1 -4
- package/lib/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +1 -0
- package/lib/common/actions/config.js +8 -0
- package/lib/common/components/ConfirmationModal/presenter.js +1 -1
- package/lib/common/components/SDKApp/index.js +9 -1
- package/lib/common/components/layout/sidebar/SidebarItem/presenter.js +1 -4
- package/lib/common/components/resources/entry/EntrySave/index.js +15 -2
- package/lib/common/components/resources/entry/EntrySave/presenter.js +96 -21
- package/lib/common/components/resources/item/ItemEdit/index.js +1 -2
- package/lib/common/components/resources/item/ItemEdit/presenter.js +0 -2
- package/lib/common/components/resources/item/ItemOverride/index.js +1 -2
- package/lib/common/components/resources/item/ItemOverride/presenter.js +2 -4
- package/lib/common/components/resources/quiz/instructions/Instructions.js +1 -4
- package/lib/common/components/resources/sessionItemResult/ResultStimulus/index.js +1 -4
- package/lib/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -8
- package/lib/common/components/resources/stimulus/StimulusEdit/presenter.js +1 -0
- package/lib/common/components/resources/stimulus/StimulusEditInfo/presenter.js +1 -4
- package/lib/common/components/resources/stimulus/StimulusShowInfo/index.js +1 -4
- package/lib/common/reducers/config.js +3 -0
- package/lib/common/util/RceConfigProvider.js +50 -34
- package/lib/common/util/interactionTypePropsHelper.js +2 -6
- package/lib/common/util/rceChecker.js +1 -1
- package/lib/common/util/windowChecks.js +13 -7
- package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +1 -4
- package/package.json +10 -10
|
@@ -16,6 +16,10 @@ var _banks = require("../../api/banks.js");
|
|
|
16
16
|
|
|
17
17
|
var _bankEntries = require("../../api/bankEntries.js");
|
|
18
18
|
|
|
19
|
+
var _items = require("../../../building/api/items.js");
|
|
20
|
+
|
|
21
|
+
var _stimuli = require("../../../building/api/stimuli.js");
|
|
22
|
+
|
|
19
23
|
var _presenter = _interopRequireDefault(require("./presenter.js"));
|
|
20
24
|
|
|
21
25
|
var modalActions = _interopRequireWildcard(require("../../../common/actions/modal.js"));
|
|
@@ -30,10 +34,15 @@ var _quizCommon = require("@instructure/quiz-common");
|
|
|
30
34
|
|
|
31
35
|
var _modalHelpers = require("../../../common/util/modalHelpers.js");
|
|
32
36
|
|
|
37
|
+
var _featureCheck = require("../../../common/util/featureCheck.js");
|
|
38
|
+
|
|
33
39
|
function mapStateToProps(state, props) {
|
|
34
40
|
var selectedBankOption = state.getIn(['ui', _quizCommon.ADD_TO_BANK_MODAL_BANK_SELECTION]);
|
|
35
41
|
var selectedBank = selectedBankOption && new _Bank.default(state.getIn(['banks', selectedBankOption]));
|
|
36
42
|
return {
|
|
43
|
+
canvasOrigin: state.getIn(['config', 'canvasOrigin']),
|
|
44
|
+
checkBankedContentShareabilityEnabled: (0, _featureCheck.featureOn)('check_banked_content_shareability'),
|
|
45
|
+
checkContentShareability: props.entryType === 'Item' ? _items.checkItemShareability : _stimuli.checkStimulusShareability,
|
|
37
46
|
selectedBank: selectedBank,
|
|
38
47
|
modalTrigger: (0, _modalHelpers.getModalTrigger)(state),
|
|
39
48
|
modalOpen: state.getIn(['modal', 'isOpen']) === [_quizCommon.ADD_TO_BANK_MODAL, props.entryType, props.entryId].join(':')
|
|
@@ -9,6 +9,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.default = exports.AddToBankModal = void 0;
|
|
11
11
|
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
12
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
17
|
|
|
14
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -37,11 +41,36 @@ var _Bank = _interopRequireDefault(require("../../../common/records/Bank.js"));
|
|
|
37
41
|
|
|
38
42
|
var _index = _interopRequireDefault(require("../../../common/components/resources/BankSelection/index.js"));
|
|
39
43
|
|
|
44
|
+
var _uiSpinner = require("@instructure/ui-spinner");
|
|
45
|
+
|
|
46
|
+
var _uiText = require("@instructure/ui-text");
|
|
47
|
+
|
|
48
|
+
var _uiIcons = require("@instructure/ui-icons");
|
|
49
|
+
|
|
50
|
+
var _uiView = require("@instructure/ui-view");
|
|
51
|
+
|
|
52
|
+
var _uiFlex = require("@instructure/ui-flex");
|
|
53
|
+
|
|
40
54
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
41
55
|
|
|
42
56
|
var _quizCommon = require("@instructure/quiz-common");
|
|
43
57
|
|
|
44
|
-
var
|
|
58
|
+
var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckLine, {
|
|
59
|
+
color: "success"
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
var _ref3 = /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
63
|
+
padding: "0 small 0 0"
|
|
64
|
+
}, /*#__PURE__*/_react.default.createElement(_uiIcons.IconNoLine, {
|
|
65
|
+
color: "error",
|
|
66
|
+
size: "small"
|
|
67
|
+
}));
|
|
68
|
+
|
|
69
|
+
var _ref4 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconWarningLine, {
|
|
70
|
+
color: "warning"
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
var _ref5 = /*#__PURE__*/_react.default.createElement("br", null);
|
|
45
74
|
|
|
46
75
|
var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
47
76
|
(0, _inherits2.default)(AddToBankModal, _Component);
|
|
@@ -60,6 +89,7 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
60
89
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
61
90
|
_this.state = {
|
|
62
91
|
bankType: 'existing',
|
|
92
|
+
contentShareable: 'loading',
|
|
63
93
|
newBankTitle: ''
|
|
64
94
|
};
|
|
65
95
|
|
|
@@ -124,6 +154,65 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
124
154
|
}
|
|
125
155
|
|
|
126
156
|
(0, _createClass2.default)(AddToBankModal, [{
|
|
157
|
+
key: "componentDidUpdate",
|
|
158
|
+
value: function componentDidUpdate(prevProps) {
|
|
159
|
+
var _this2 = this;
|
|
160
|
+
|
|
161
|
+
var _this$props = this.props,
|
|
162
|
+
canvasOrigin = _this$props.canvasOrigin,
|
|
163
|
+
checkBankedContentShareabilityEnabled = _this$props.checkBankedContentShareabilityEnabled,
|
|
164
|
+
modalOpen = _this$props.modalOpen,
|
|
165
|
+
checkContentShareability = _this$props.checkContentShareability,
|
|
166
|
+
workingEntry = _this$props.workingEntry;
|
|
167
|
+
|
|
168
|
+
if (checkBankedContentShareabilityEnabled && modalOpen && !prevProps.modalOpen) {
|
|
169
|
+
this.setState({
|
|
170
|
+
contentShareable: 'loading'
|
|
171
|
+
});
|
|
172
|
+
checkContentShareability(workingEntry, canvasOrigin).then(function () {
|
|
173
|
+
_this2.setState({
|
|
174
|
+
contentShareable: 'true'
|
|
175
|
+
});
|
|
176
|
+
}).catch( /*#__PURE__*/function () {
|
|
177
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(err) {
|
|
178
|
+
var _err$response, _err$response2;
|
|
179
|
+
|
|
180
|
+
var body;
|
|
181
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
182
|
+
while (1) {
|
|
183
|
+
switch (_context.prev = _context.next) {
|
|
184
|
+
case 0:
|
|
185
|
+
_context.next = 2;
|
|
186
|
+
return (_err$response = err.response) === null || _err$response === void 0 ? void 0 : _err$response.json();
|
|
187
|
+
|
|
188
|
+
case 2:
|
|
189
|
+
body = _context.sent;
|
|
190
|
+
|
|
191
|
+
if (((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : _err$response2.status) === 400 && body.shareable === false) {
|
|
192
|
+
_this2.setState({
|
|
193
|
+
contentShareable: 'false'
|
|
194
|
+
});
|
|
195
|
+
} else {
|
|
196
|
+
_this2.setState({
|
|
197
|
+
contentShareable: 'unknown'
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
case 4:
|
|
202
|
+
case "end":
|
|
203
|
+
return _context.stop();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}, _callee);
|
|
207
|
+
}));
|
|
208
|
+
|
|
209
|
+
return function (_x) {
|
|
210
|
+
return _ref.apply(this, arguments);
|
|
211
|
+
};
|
|
212
|
+
}());
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}, {
|
|
127
216
|
key: "cancelButton",
|
|
128
217
|
value: function cancelButton() {
|
|
129
218
|
return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
@@ -136,8 +225,11 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
136
225
|
value: function addToBankButton() {
|
|
137
226
|
var _this$state = this.state,
|
|
138
227
|
bankType = _this$state.bankType,
|
|
139
|
-
newBankTitle = _this$state.newBankTitle
|
|
140
|
-
|
|
228
|
+
newBankTitle = _this$state.newBankTitle,
|
|
229
|
+
contentShareable = _this$state.contentShareable;
|
|
230
|
+
var checkBankedContentShareabilityEnabled = this.props.checkBankedContentShareabilityEnabled;
|
|
231
|
+
var contentShareableLoading = contentShareable === 'loading';
|
|
232
|
+
var disabled = bankType === 'existing' && !this.props.selectedBank || bankType === 'new' && (!newBankTitle || !newBankTitle.trim()) || checkBankedContentShareabilityEnabled && contentShareableLoading;
|
|
141
233
|
return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
142
234
|
type: "button",
|
|
143
235
|
variant: "primary",
|
|
@@ -145,7 +237,7 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
145
237
|
disabled: disabled,
|
|
146
238
|
margin: _quizCommon.XSMALL_SIDE_MARGIN,
|
|
147
239
|
"data-automation": "sdk-add-to-bank-button"
|
|
148
|
-
}, (0, _formatMessage.default)('Add'));
|
|
240
|
+
}, checkBankedContentShareabilityEnabled && !contentShareableLoading && contentShareable !== 'true' ? (0, _formatMessage.default)('Add anyway') : (0, _formatMessage.default)('Add'));
|
|
149
241
|
}
|
|
150
242
|
}, {
|
|
151
243
|
key: "renderBankTypeContent",
|
|
@@ -165,6 +257,37 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
165
257
|
type: "text"
|
|
166
258
|
});
|
|
167
259
|
}
|
|
260
|
+
}, {
|
|
261
|
+
key: "renderContentShareabilityMessage",
|
|
262
|
+
value: function renderContentShareabilityMessage() {
|
|
263
|
+
if (this.props.checkBankedContentShareabilityEnabled) {
|
|
264
|
+
var content = null;
|
|
265
|
+
|
|
266
|
+
if (this.state.contentShareable === 'loading') {
|
|
267
|
+
content = /*#__PURE__*/_react.default.createElement(_uiText.Text, null, /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
|
|
268
|
+
size: "x-small",
|
|
269
|
+
renderTitle: (0, _formatMessage.default)('Checking content shareability...')
|
|
270
|
+
}), "\xA0", (0, _formatMessage.default)('Validating content...'));
|
|
271
|
+
} else if (this.state.contentShareable === 'true') {
|
|
272
|
+
content = /*#__PURE__*/_react.default.createElement(_uiText.Text, null, _ref2, "\xA0", (0, _formatMessage.default)('Good to go!'));
|
|
273
|
+
} else if (this.state.contentShareable === 'false') {
|
|
274
|
+
content = /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, null, _ref3, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
275
|
+
shouldShrink: true
|
|
276
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
277
|
+
color: "error"
|
|
278
|
+
}, (0, _formatMessage.default)('You are attempting to add content containing course links which may not work when used in other courses.'))));
|
|
279
|
+
} else {
|
|
280
|
+
content = /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
281
|
+
color: "warning"
|
|
282
|
+
}, _ref4, "\xA0", (0, _formatMessage.default)('There was an error attempting to validate shareability.'));
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return /*#__PURE__*/_react.default.createElement(_uiView.View, {
|
|
286
|
+
as: "div",
|
|
287
|
+
margin: "small 0 0 0"
|
|
288
|
+
}, content);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
168
291
|
}, {
|
|
169
292
|
key: "renderContent",
|
|
170
293
|
value: function renderContent() {
|
|
@@ -179,7 +302,7 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
179
302
|
}), /*#__PURE__*/_react.default.createElement(_uiRadioInput.RadioInput, {
|
|
180
303
|
value: "new",
|
|
181
304
|
label: (0, _formatMessage.default)('New item bank')
|
|
182
|
-
})),
|
|
305
|
+
})), _ref5, this.renderBankTypeContent(), this.renderContentShareabilityMessage());
|
|
183
306
|
}
|
|
184
307
|
}, {
|
|
185
308
|
key: "render",
|
|
@@ -207,6 +330,9 @@ var AddToBankModal = /*#__PURE__*/function (_Component) {
|
|
|
207
330
|
|
|
208
331
|
exports.AddToBankModal = AddToBankModal;
|
|
209
332
|
AddToBankModal.propTypes = {
|
|
333
|
+
canvasOrigin: _propTypes.default.string,
|
|
334
|
+
checkBankedContentShareabilityEnabled: _propTypes.default.bool,
|
|
335
|
+
checkContentShareability: _propTypes.default.func.isRequired,
|
|
210
336
|
closeModal: _propTypes.default.func.isRequired,
|
|
211
337
|
createBank: _propTypes.default.func.isRequired,
|
|
212
338
|
createBankEntry: _propTypes.default.func.isRequired,
|
|
@@ -218,15 +344,18 @@ AddToBankModal.propTypes = {
|
|
|
218
344
|
entryType: _propTypes.default.string.isRequired,
|
|
219
345
|
// Resolve to the bank entry's entry, or create it if it does not yet exist.
|
|
220
346
|
getEntry: _propTypes.default.func.isRequired,
|
|
347
|
+
handleValidationErrorsFromApi: _propTypes.default.func.isRequired,
|
|
221
348
|
label: _propTypes.default.string.isRequired,
|
|
222
349
|
modalOpen: _propTypes.default.bool.isRequired,
|
|
223
350
|
onAdd: _propTypes.default.func,
|
|
224
351
|
onContinue: _propTypes.default.func,
|
|
225
352
|
selectedBank: _reactImmutableProptypes.default.record,
|
|
226
353
|
uiSet: _propTypes.default.func.isRequired,
|
|
227
|
-
|
|
354
|
+
workingEntry: _reactImmutableProptypes.default.record.isRequired
|
|
228
355
|
};
|
|
229
356
|
AddToBankModal.defaultProps = {
|
|
357
|
+
canvasOrigin: '',
|
|
358
|
+
checkBankedContentShareabilityEnabled: false,
|
|
230
359
|
onAdd: function onAdd() {},
|
|
231
360
|
onContinue: function onContinue() {},
|
|
232
361
|
selectedBank: null
|
|
@@ -245,17 +245,18 @@ var BankEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
245
245
|
return {
|
|
246
246
|
cancelHandler: _this.navigateToBank,
|
|
247
247
|
clearChanges: _this.clearChanges,
|
|
248
|
+
clearValidationErrorsFromApi: _this.clearValidationErrorsFromApi,
|
|
248
249
|
contextUuid: null,
|
|
250
|
+
disableSubmit: Boolean(_this.state.validationErrorsFromApi && Object.values(_this.state.validationErrorsFromApi).length),
|
|
249
251
|
entry: entry,
|
|
250
252
|
guid: "".concat(_this.props.bankEntry.id, "_bank_entry_edit"),
|
|
251
253
|
handleQuizEntryPointsChange: _this.handlePointsChange,
|
|
252
254
|
parentId: _this.props.bankId,
|
|
253
255
|
parentType: _quizCommon.PARENT_TYPE_BANK,
|
|
256
|
+
shouldValidateShareableContent: true,
|
|
254
257
|
stimulus: entry,
|
|
255
258
|
submitHandler: _this.submitHandler,
|
|
256
|
-
validationErrorsFromApi: _this.state.validationErrorsFromApi
|
|
257
|
-
clearValidationErrorsFromApi: _this.clearValidationErrorsFromApi,
|
|
258
|
-
disableSubmit: Boolean(_this.state.validationErrorsFromApi && Object.values(_this.state.validationErrorsFromApi).length)
|
|
259
|
+
validationErrorsFromApi: _this.state.validationErrorsFromApi
|
|
259
260
|
};
|
|
260
261
|
};
|
|
261
262
|
|
|
@@ -47,8 +47,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
47
47
|
|
|
48
48
|
var _quizRce = require("@instructure/quiz-rce");
|
|
49
49
|
|
|
50
|
-
var _rceChecker = require("../../../common/util/rceChecker.js");
|
|
51
|
-
|
|
52
50
|
var _quizCommon = require("@instructure/quiz-common");
|
|
53
51
|
|
|
54
52
|
var _quizInteractions = require("@instructure/quiz-interactions");
|
|
@@ -322,8 +320,7 @@ var BankEntryRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
|
|
|
322
320
|
if (itemOrStimulus.itemBody) {
|
|
323
321
|
return /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
324
322
|
customStyles: styles.stem,
|
|
325
|
-
content: itemOrStimulus.itemBody
|
|
326
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
323
|
+
content: itemOrStimulus.itemBody
|
|
327
324
|
});
|
|
328
325
|
} else {
|
|
329
326
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.getItem = getItem;
|
|
9
|
+
exports.checkItemShareability = checkItemShareability;
|
|
9
10
|
exports.createItem = createItem;
|
|
10
11
|
exports.updateItem = updateItem;
|
|
11
12
|
|
|
@@ -50,6 +51,20 @@ function getItem(itemId) {
|
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
|
|
54
|
+
function checkItemShareability(item, canvasOrigin) {
|
|
55
|
+
var url = '/api/items/check_shareability';
|
|
56
|
+
var requestBody = JSON.stringify({
|
|
57
|
+
item: updateItemParams(item),
|
|
58
|
+
source_origin: canvasOrigin
|
|
59
|
+
});
|
|
60
|
+
var fetcher = new _Fetcher.default({
|
|
61
|
+
onError: function onError() {}
|
|
62
|
+
});
|
|
63
|
+
return fetcher.post(url, {
|
|
64
|
+
body: requestBody
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
53
68
|
function createItem(item, parentId, parentType) {
|
|
54
69
|
var parentItemId = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;
|
|
55
70
|
var resource = parentType === 'bank' ? 'banks' : 'quizzes';
|
|
@@ -157,10 +172,8 @@ function createItem(item, parentId, parentType) {
|
|
|
157
172
|
// =====================
|
|
158
173
|
|
|
159
174
|
|
|
160
|
-
function
|
|
161
|
-
|
|
162
|
-
var url = "/api/".concat(resource, "/").concat(parentId, "/items/").concat(item.id);
|
|
163
|
-
var itemData = {
|
|
175
|
+
function updateItemParams(item) {
|
|
176
|
+
return {
|
|
164
177
|
item_body: item.itemBody,
|
|
165
178
|
title: item.title,
|
|
166
179
|
scoring_data: item.scoringData,
|
|
@@ -172,8 +185,13 @@ function updateItem(item, parentId, parentType) {
|
|
|
172
185
|
calculator_type: item.calculatorType,
|
|
173
186
|
answer_feedback: item.answerFeedback
|
|
174
187
|
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function updateItem(item, parentId, parentType) {
|
|
191
|
+
var resource = parentType === 'bank' ? 'banks' : 'quizzes';
|
|
192
|
+
var url = "/api/".concat(resource, "/").concat(parentId, "/items/").concat(item.id);
|
|
175
193
|
var reqBody = JSON.stringify({
|
|
176
|
-
item:
|
|
194
|
+
item: updateItemParams(item)
|
|
177
195
|
});
|
|
178
196
|
return function (dispatch, getState) {
|
|
179
197
|
var updateItemParams = {
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.createStimulus = createStimulus;
|
|
9
9
|
exports.updateStimulus = updateStimulus;
|
|
10
|
+
exports.checkStimulusShareability = checkStimulusShareability;
|
|
10
11
|
|
|
11
12
|
var _quizCommon = require("@instructure/quiz-common");
|
|
12
13
|
|
|
@@ -61,18 +62,21 @@ function createStimulus(stimulus, parentId, parentType) {
|
|
|
61
62
|
// =====================
|
|
62
63
|
|
|
63
64
|
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
var url = "/api/".concat(resource, "/").concat(parentId, "/stimuli/").concat(stimulus.id);
|
|
67
|
-
var stimulusData = {
|
|
65
|
+
function updateStimulusParams(stimulus) {
|
|
66
|
+
return {
|
|
68
67
|
orientation: stimulus.orientation,
|
|
69
68
|
title: stimulus.title,
|
|
70
69
|
instructions: stimulus.instructions,
|
|
71
70
|
body: stimulus.body,
|
|
72
71
|
source_url: stimulus.sourceUrl
|
|
73
72
|
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function updateStimulus(stimulus, parentId, parentType) {
|
|
76
|
+
var resource = parentType === 'bank' ? 'banks' : 'quizzes';
|
|
77
|
+
var url = "/api/".concat(resource, "/").concat(parentId, "/stimuli/").concat(stimulus.id);
|
|
74
78
|
var reqBody = JSON.stringify({
|
|
75
|
-
stimulus:
|
|
79
|
+
stimulus: updateStimulusParams(stimulus)
|
|
76
80
|
});
|
|
77
81
|
return function (dispatch, getState) {
|
|
78
82
|
var updateStimulusParams = {
|
|
@@ -89,4 +93,18 @@ function updateStimulus(stimulus, parentId, parentType) {
|
|
|
89
93
|
return stimulusData;
|
|
90
94
|
});
|
|
91
95
|
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function checkStimulusShareability(stimulus, canvasOrigin) {
|
|
99
|
+
var url = '/api/stimuli/check_shareability';
|
|
100
|
+
var requestBody = JSON.stringify({
|
|
101
|
+
stimulus: updateStimulusParams(stimulus),
|
|
102
|
+
source_origin: canvasOrigin
|
|
103
|
+
});
|
|
104
|
+
var fetcher = new _Fetcher.default({
|
|
105
|
+
onError: function onError() {}
|
|
106
|
+
});
|
|
107
|
+
return fetcher.post(url, {
|
|
108
|
+
body: requestBody
|
|
109
|
+
});
|
|
92
110
|
}
|
|
@@ -31,8 +31,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
31
31
|
|
|
32
32
|
var _quizRce = require("@instructure/quiz-rce");
|
|
33
33
|
|
|
34
|
-
var _rceChecker = require("../../../../common/util/rceChecker.js");
|
|
35
|
-
|
|
36
34
|
var _index = require("../../../../common/components/RichContentInput/index.js");
|
|
37
35
|
|
|
38
36
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
@@ -134,7 +132,6 @@ var ItemFeedbackModal = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
134
132
|
parentType: this.props.parentType,
|
|
135
133
|
parentId: this.props.parentId,
|
|
136
134
|
importModalCloseOverride: this.returnToFeedback,
|
|
137
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)(),
|
|
138
135
|
height: _quizRce.RCE_THREE_LINES_HEIGHT
|
|
139
136
|
}));
|
|
140
137
|
}
|
|
@@ -143,8 +140,7 @@ var ItemFeedbackModal = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
143
140
|
value: function renderContent() {
|
|
144
141
|
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
145
142
|
customStyles: styles.itemStem,
|
|
146
|
-
content: this.props.item.itemBody
|
|
147
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
143
|
+
content: this.props.item.itemBody
|
|
148
144
|
}), this.renderRichContentInput('correct', (0, _formatMessage.default)('For a correct answer')), this.renderRichContentInput('incorrect', (0, _formatMessage.default)('For an incorrect answer')), this.renderRichContentInput('neutral', (0, _formatMessage.default)('Provide general feedback (regardless of answer)')));
|
|
149
145
|
}
|
|
150
146
|
}, {
|
|
@@ -29,8 +29,6 @@ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/f
|
|
|
29
29
|
|
|
30
30
|
var _index = _interopRequireDefault(require("../../../../../../common/components/RichContentInput/index.js"));
|
|
31
31
|
|
|
32
|
-
var _rceChecker = require("../../../../../../common/util/rceChecker.js");
|
|
33
|
-
|
|
34
32
|
var _componentWithOutsideClick = _interopRequireDefault(require("../../../../../../common/components/shared/functionality/componentWithOutsideClick.js"));
|
|
35
33
|
|
|
36
34
|
var _CustomPropTypes = _interopRequireDefault(require("../../../../../../common/util/CustomPropTypes.js"));
|
|
@@ -115,8 +113,7 @@ var QuizInstructionsEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, s
|
|
|
115
113
|
onKeyUp: this.props.onInputChange,
|
|
116
114
|
onChange: this.props.onInputChange,
|
|
117
115
|
parentType: _quizCommon.PARENT_TYPE_QUIZ,
|
|
118
|
-
parentId: this.props.quizId
|
|
119
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
116
|
+
parentId: this.props.quizId
|
|
120
117
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
121
118
|
className: styles.footer
|
|
122
119
|
}, /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
@@ -25,8 +25,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
25
25
|
|
|
26
26
|
var _quizRce = require("@instructure/quiz-rce");
|
|
27
27
|
|
|
28
|
-
var _rceChecker = require("../../../../../../common/util/rceChecker.js");
|
|
29
|
-
|
|
30
28
|
var _Overlay = _interopRequireDefault(require("../../../../../../common/components/shared/overlay/Overlay.js"));
|
|
31
29
|
|
|
32
30
|
var _makeScrollable = _interopRequireDefault(require("../../../../../../common/components/shared/functionality/makeScrollable.js"));
|
|
@@ -87,8 +85,7 @@ var QuizInstructionsShow = (_dec = (0, _uiThemeable.themeable)(_theme.default, s
|
|
|
87
85
|
"data-automation": "instructions-show-text"
|
|
88
86
|
}, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
89
87
|
customStyles: styles.instructionsShowText,
|
|
90
|
-
content: this.props.instructions || (0, _formatMessage.default)('Add Instructions...')
|
|
91
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
88
|
+
content: this.props.instructions || (0, _formatMessage.default)('Add Instructions...')
|
|
92
89
|
}))));
|
|
93
90
|
}
|
|
94
91
|
}]);
|
|
@@ -59,8 +59,6 @@ var _index8 = _interopRequireDefault(require("../../../../../common/components/s
|
|
|
59
59
|
|
|
60
60
|
var _Item = _interopRequireDefault(require("../../../../../common/records/Item.js"));
|
|
61
61
|
|
|
62
|
-
var _rceChecker = require("../../../../../common/util/rceChecker.js");
|
|
63
|
-
|
|
64
62
|
var _quizCommon = require("@instructure/quiz-common");
|
|
65
63
|
|
|
66
64
|
var _index9 = _interopRequireDefault(require("../QuizEntryShow/index.js"));
|
|
@@ -216,8 +214,7 @@ var QuizEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
216
214
|
initialFocusId: this.props.initialFocusId,
|
|
217
215
|
handleValidationErrorsFromApi: this.props.handleValidationErrorsFromApi,
|
|
218
216
|
clearValidationErrorsFromApi: this.props.clearValidationErrorsFromApi,
|
|
219
|
-
haveValidationErrorsFromApi: Boolean(Object.values(this.props.validationErrorsFromApi).length)
|
|
220
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
217
|
+
haveValidationErrorsFromApi: Boolean(Object.values(this.props.validationErrorsFromApi).length)
|
|
221
218
|
}, (0, _pick.default)(this.props, ['displayPosition', 'guid', 'draggingOnBuild', 'newHoverPosition', 'quizEntry', 'quizEntries', 'quizId', 'isContentLockedByBlueprint', 'setUi', 'switchOffEditing', 'switchOnEditing', 'shouldClone', 'scrollKey', 'editQuizEntryToggle', 'onEditQuizEntryToggle', 'stimulusOrientation']));
|
|
222
219
|
}
|
|
223
220
|
}, {
|
|
@@ -424,6 +424,7 @@ var QuizEntryEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
|
|
|
424
424
|
onContinue: this.handleAddToBankContinue,
|
|
425
425
|
onAdd: this.handleAddToBank,
|
|
426
426
|
getEntry: this.getEntryForBank,
|
|
427
|
+
workingEntry: this.props.workingEntry,
|
|
427
428
|
entryId: this.props.guid,
|
|
428
429
|
entryType: this.props.quizEntry.entryType,
|
|
429
430
|
handleValidationErrorsFromApi: this.props.handleValidationErrorsFromApi
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.setAPIEndpoint = setAPIEndpoint;
|
|
7
7
|
exports.setUserToken = setUserToken;
|
|
8
|
+
exports.setCanvasOrigin = setCanvasOrigin;
|
|
8
9
|
|
|
9
10
|
var _quizCommon = require("@instructure/quiz-common");
|
|
10
11
|
|
|
@@ -20,4 +21,11 @@ function setUserToken(token) {
|
|
|
20
21
|
type: _quizCommon.SET_USER_TOKEN,
|
|
21
22
|
payload: token
|
|
22
23
|
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function setCanvasOrigin(canvasHost) {
|
|
27
|
+
return {
|
|
28
|
+
type: _quizCommon.SET_CANVAS_ORIGIN,
|
|
29
|
+
payload: canvasHost
|
|
30
|
+
};
|
|
23
31
|
}
|
|
@@ -105,7 +105,7 @@ var ConfirmationModal = /*#__PURE__*/function (_Component) {
|
|
|
105
105
|
as: "h2",
|
|
106
106
|
"data-automation": "sdk-confirmation-modal-heading"
|
|
107
107
|
}, title || (0, _formatMessage.default)('Confirm')), /*#__PURE__*/_react.default.createElement(_uiButtons.CloseButton, {
|
|
108
|
-
onClick: this.
|
|
108
|
+
onClick: this.cancelAction,
|
|
109
109
|
placement: "end",
|
|
110
110
|
offset: "medium",
|
|
111
111
|
screenReaderLabel: (0, _formatMessage.default)('Close')
|
|
@@ -108,7 +108,9 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
|
|
|
108
108
|
}, {
|
|
109
109
|
key: "componentWillMount",
|
|
110
110
|
value: function componentWillMount() {
|
|
111
|
-
|
|
111
|
+
var _this$props$rceConfig;
|
|
112
|
+
|
|
113
|
+
this.store.dispatch([(0, _config.setAPIEndpoint)(this.props.apiEndpoint), (0, _config.setCanvasOrigin)((_this$props$rceConfig = this.props.rceConfig) === null || _this$props$rceConfig === void 0 ? void 0 : _this$props$rceConfig.canvasOrigin), this.setAppContainer(this.props.appContainer), (0, _config.setUserToken)(this.props.userToken), (0, _outcomes.setOutcomesEndpoint)(this.props.outcomesEndpoint), (0, _outcomes.setOutcomesToken)(this.props.outcomesToken), (0, _outcomes.setContextUuid)(this.props.contextUuid)]);
|
|
112
114
|
this.store.dispatch((0, _features.getFeatures)());
|
|
113
115
|
|
|
114
116
|
if (this.props.itemBankSharingEnabled) {
|
|
@@ -125,10 +127,16 @@ var SDKApp = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_
|
|
|
125
127
|
}, {
|
|
126
128
|
key: "componentWillReceiveProps",
|
|
127
129
|
value: function componentWillReceiveProps(newProps) {
|
|
130
|
+
var _newProps$rceConfig, _this$props$rceConfig2;
|
|
131
|
+
|
|
128
132
|
if (newProps.apiEndpoint !== this.props.apiEndpoint) {
|
|
129
133
|
this.store.dispatch((0, _config.setAPIEndpoint)(newProps.apiEndpoint));
|
|
130
134
|
}
|
|
131
135
|
|
|
136
|
+
if (((_newProps$rceConfig = newProps.rceConfig) === null || _newProps$rceConfig === void 0 ? void 0 : _newProps$rceConfig.canvasOrigin) !== ((_this$props$rceConfig2 = this.props.rceConfig) === null || _this$props$rceConfig2 === void 0 ? void 0 : _this$props$rceConfig2.canvasOrigin)) {
|
|
137
|
+
this.store.dispatch((0, _config.setCanvasOrigin)(newProps.rceConfig.canvasOrigin));
|
|
138
|
+
}
|
|
139
|
+
|
|
132
140
|
if (newProps.appContainer !== this.props.appContainer) {
|
|
133
141
|
this.store.dispatch(this.setAppContainer(newProps.appContainer));
|
|
134
142
|
}
|
|
@@ -41,8 +41,6 @@ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/f
|
|
|
41
41
|
|
|
42
42
|
var _quizRce = require("@instructure/quiz-rce");
|
|
43
43
|
|
|
44
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
45
|
-
|
|
46
44
|
var _theme = _interopRequireDefault(require("./theme.js"));
|
|
47
45
|
|
|
48
46
|
var _dec, _class, _class2, _temp;
|
|
@@ -188,8 +186,7 @@ var SidebarItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _
|
|
|
188
186
|
}, this.getPointsText(pointsPossible || 0))), /*#__PURE__*/_react.default.createElement("div", {
|
|
189
187
|
className: styles.itemBody
|
|
190
188
|
}, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
191
|
-
content: this.props.itemBody
|
|
192
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
189
|
+
content: this.props.itemBody
|
|
193
190
|
})))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
194
191
|
className: styles.pinWrapper
|
|
195
192
|
}, children))));
|
|
@@ -5,10 +5,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.mapStateToProps = mapStateToProps;
|
|
8
9
|
exports.default = void 0;
|
|
9
10
|
|
|
10
11
|
var _reactRedux = require("../../../../react-redux.js");
|
|
11
12
|
|
|
13
|
+
var _items = require("../../../../../building/api/items.js");
|
|
14
|
+
|
|
15
|
+
var _stimuli = require("../../../../../building/api/stimuli.js");
|
|
16
|
+
|
|
12
17
|
var _makeEditable = _interopRequireDefault(require("../../../shared/functionality/makeEditable.js"));
|
|
13
18
|
|
|
14
19
|
var _errorsShowing = require("../../../../actions/errorsShowing.js");
|
|
@@ -17,6 +22,10 @@ var _alerts = require("../../../../actions/alerts.js");
|
|
|
17
22
|
|
|
18
23
|
var _modifications = require("../../../../actions/modifications.js");
|
|
19
24
|
|
|
25
|
+
var _modal = require("../../../../actions/modal.js");
|
|
26
|
+
|
|
27
|
+
var _featureCheck = require("../../../../util/featureCheck.js");
|
|
28
|
+
|
|
20
29
|
var _presenter = _interopRequireDefault(require("./presenter.js"));
|
|
21
30
|
|
|
22
31
|
function mapStateToProps(state, props) {
|
|
@@ -24,15 +33,19 @@ function mapStateToProps(state, props) {
|
|
|
24
33
|
var workingEntry = props.entry.getWorkingInstance();
|
|
25
34
|
var isValid = props.isValid !== void 0 ? props.isValid : workingEntry.isValid();
|
|
26
35
|
return {
|
|
36
|
+
canvasOrigin: state.getIn(['config', 'canvasOrigin']),
|
|
37
|
+
checkBankedContentShareabilityEnabled: (0, _featureCheck.featureOn)('check_banked_content_shareability'),
|
|
38
|
+
checkContentShareability: props.entry.isStimulus ? _stimuli.checkStimulusShareability : _items.checkItemShareability,
|
|
27
39
|
isValid: isValid
|
|
28
40
|
};
|
|
29
41
|
}
|
|
30
42
|
|
|
31
43
|
var mapDispatchToProps = {
|
|
32
44
|
clearNextQuizEntry: _modifications.clearNextQuizEntry,
|
|
33
|
-
showError: _errorsShowing.showError,
|
|
34
45
|
hideError: _errorsShowing.hideError,
|
|
35
|
-
screenreaderNotification: _alerts.screenreaderNotification
|
|
46
|
+
screenreaderNotification: _alerts.screenreaderNotification,
|
|
47
|
+
showError: _errorsShowing.showError,
|
|
48
|
+
withConfirm: _modal.withConfirm
|
|
36
49
|
};
|
|
37
50
|
|
|
38
51
|
var _default = (0, _makeEditable.default)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_presenter.default));
|