@oat-sa/tao-core-ui 1.58.1 → 1.58.2
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/dist/actionbar.js +386 -395
- package/dist/adder.js +21 -19
- package/dist/animable/absorbable/absorbable.js +204 -213
- package/dist/animable/absorbable/css/absorb.css +1 -0
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +168 -177
- package/dist/autocomplete/css/autocomplete.css +1 -0
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +68 -66
- package/dist/badge/badge.js +188 -197
- package/dist/badge/css/badge.css +1 -0
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs.js +275 -284
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup.js +490 -495
- package/dist/button.js +283 -291
- package/dist/cascadingComboBox.js +249 -258
- package/dist/ckeditor/ckConfigurator.js +26 -19
- package/dist/ckeditor/dtdHandler.js +11 -9
- package/dist/class/selector.js +441 -450
- package/dist/component/resizable.js +1 -1
- package/dist/component/windowed.js +285 -294
- package/dist/component.js +419 -428
- package/dist/contextualPopup.js +417 -426
- package/dist/dashboard.js +300 -309
- package/dist/datalist.js +753 -762
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1527 -1550
- package/dist/dateRange/dateRange.js +393 -402
- package/dist/datetime/picker.js +665 -672
- package/dist/deleter.js +368 -377
- package/dist/destination/selector.js +286 -295
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +216 -225
- package/dist/dialog.js +650 -654
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
- package/dist/documentViewer/providers/pdfViewer.js +184 -193
- package/dist/documentViewer.js +292 -301
- package/dist/dropdown.js +383 -392
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent.js +597 -598
- package/dist/feedback.js +356 -362
- package/dist/figure/FigureStateActive.js +117 -108
- package/dist/filesender.js +2 -2
- package/dist/filter.js +230 -239
- package/dist/form/dropdownForm.js +355 -357
- package/dist/form/form.js +919 -690
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/renderer.js +233 -235
- package/dist/form/validator/validator.js +257 -189
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +254 -259
- package/dist/form/widget/providers/comboBox.js +187 -192
- package/dist/form/widget/providers/default.js +8 -9
- package/dist/form/widget/providers/hidden.js +170 -179
- package/dist/form/widget/providers/hiddenBox.js +262 -267
- package/dist/form/widget/providers/radioBox.js +216 -225
- package/dist/form/widget/providers/textArea.js +187 -196
- package/dist/form/widget/providers/textBox.js +2 -3
- package/dist/form/widget/widget.js +473 -475
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/form.js +314 -323
- package/dist/generis/validator/validator.js +209 -218
- package/dist/generis/widget/checkBox/checkBox.js +218 -227
- package/dist/generis/widget/comboBox/comboBox.js +179 -188
- package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
- package/dist/generis/widget/textBox/textBox.js +169 -178
- package/dist/generis/widget/widget.js +246 -255
- package/dist/groupedComboBox.js +222 -231
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +967 -958
- package/dist/image/ImgStateActive/helper.js +7 -5
- package/dist/image/ImgStateActive/initHelper.js +49 -43
- package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
- package/dist/image/ImgStateActive/mediaSizer.js +14 -12
- package/dist/image/ImgStateActive.js +72 -70
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +1 -0
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +439 -435
- package/dist/keyNavigation/navigableDomElement.js +51 -38
- package/dist/keyNavigation/navigator.js +85 -70
- package/dist/listbox.js +460 -469
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/loadingButton.js +209 -218
- package/dist/lock.js +476 -485
- package/dist/login/login.js +475 -484
- package/dist/maths/calculator/basicCalculator.js +235 -244
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +772 -781
- package/dist/maths/calculator/core/expression.js +476 -485
- package/dist/maths/calculator/core/labels.js +228 -237
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +163 -170
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
- package/dist/maths/calculator/scientificCalculator.js +327 -336
- package/dist/mediaEditor/mediaEditorComponent.js +238 -245
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
- package/dist/mediaplayer/players/html5.js +666 -675
- package/dist/mediaplayer/players/youtube.js +419 -424
- package/dist/mediaplayer/support.js +11 -10
- package/dist/mediaplayer/utils/reminder.js +14 -13
- package/dist/mediaplayer/utils/timeObserver.js +10 -11
- package/dist/mediaplayer/youtubeManager.js +164 -145
- package/dist/mediaplayer.js +1565 -1520
- package/dist/mediasizer.js +669 -678
- package/dist/modal.js +10 -17
- package/dist/pageSizeSelector.js +219 -228
- package/dist/pagination/providers/pages.js +280 -289
- package/dist/pagination/providers/simple.js +192 -201
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +347 -356
- package/dist/resource/filters.js +271 -280
- package/dist/resource/list.js +1264 -1273
- package/dist/resource/selector.js +865 -874
- package/dist/resource/tree.js +1483 -1492
- package/dist/resourcemgr/fileBrowser.js +564 -569
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +515 -524
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +306 -315
- package/dist/searchModal/advancedSearch.js +796 -767
- package/dist/searchModal.js +114 -91
- package/dist/switch/switch.js +298 -307
- package/dist/tabs.js +598 -575
- package/dist/taskQueue/status.js +312 -321
- package/dist/taskQueue/table.js +375 -384
- package/dist/taskQueue/taskQueueModel.js +488 -472
- package/dist/taskQueueButton/taskable.js +264 -273
- package/dist/taskQueueButton/treeButton.js +189 -198
- package/dist/themeLoader.js +24 -23
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +295 -304
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup.js +311 -320
- package/dist/uploader.js +687 -696
- package/dist/validator/Report.js +1 -1
- package/dist/validator/Validator.js +3 -3
- package/dist/validator/validators.js +9 -9
- package/dist/validator.js +240 -230
- package/dist/waitForMedia.js +1 -1
- package/package.json +3 -3
- package/src/animable/absorbable/css/absorb.css +1 -0
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css +1 -0
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/badge/css/badge.css +1 -0
- package/src/badge/css/badge.css.map +1 -1
- package/src/ckeditor/ckConfigurator.js +4 -0
- package/src/itemButtonList/css/item-button-list.css +1 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/.DS_Store +0 -0
- package/src/css/basic.css +0 -7826
- package/src/css/basic.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
- package/src/scss/.DS_Store +0 -0
- package/src/scss/basic.scss +0 -16
- package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
- package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
- package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
- package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
- package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
- package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
- package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
- package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
- package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
- package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
- package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
- package/src/scss/font/tao/tao.eot +0 -0
- package/src/scss/font/tao/tao.svg +0 -235
- package/src/scss/font/tao/tao.ttf +0 -0
- package/src/scss/font/tao/tao.woff +0 -0
- package/src/scss/inc/_base.scss +0 -496
- package/src/scss/inc/_bootstrap.scss +0 -6
- package/src/scss/inc/_buttons.scss +0 -114
- package/src/scss/inc/_colors.scss +0 -88
- package/src/scss/inc/_feedback.scss +0 -150
- package/src/scss/inc/_flex-grid.scss +0 -15
- package/src/scss/inc/_fonts.scss +0 -4
- package/src/scss/inc/_forms.scss +0 -827
- package/src/scss/inc/_functions.scss +0 -283
- package/src/scss/inc/_grid.scss +0 -66
- package/src/scss/inc/_jquery.nouislider.scss +0 -254
- package/src/scss/inc/_normalize.scss +0 -528
- package/src/scss/inc/_report.scss +0 -68
- package/src/scss/inc/_secondary-properties.scss +0 -89
- package/src/scss/inc/_select2.scss +0 -634
- package/src/scss/inc/_toolbars.scss +0 -155
- package/src/scss/inc/_tooltip.scss +0 -312
- package/src/scss/inc/_variables.scss +0 -21
- package/src/scss/inc/base/_highlight.scss +0 -5
- package/src/scss/inc/base/_list-style.scss +0 -59
- package/src/scss/inc/base/_svg.scss +0 -3
- package/src/scss/inc/base/_table.scss +0 -63
- package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
- package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
- package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
- package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
|
@@ -1,335 +1,326 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'ui/component', 'ui/dialog/confirm', 'ui/resource/selector', 'ui/loadingButton/loadingButton', 'ui/taskQueueButton/standardButton', 'handlebars', 'lib/dompurify/purify', 'css!ui/destination/css/selector.css'], function ($$1, _, __, component, confirmDialog, resourceSelectorFactory, loadingButtonFactory, taskCreationButtonFactory, Handlebars, DOMPurify, selector_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
confirmDialog = confirmDialog && Object.prototype.hasOwnProperty.call(confirmDialog, 'default') ? confirmDialog['default'] : confirmDialog;
|
|
8
|
+
resourceSelectorFactory = resourceSelectorFactory && Object.prototype.hasOwnProperty.call(resourceSelectorFactory, 'default') ? resourceSelectorFactory['default'] : resourceSelectorFactory;
|
|
9
|
+
loadingButtonFactory = loadingButtonFactory && Object.prototype.hasOwnProperty.call(loadingButtonFactory, 'default') ? loadingButtonFactory['default'] : loadingButtonFactory;
|
|
10
|
+
taskCreationButtonFactory = taskCreationButtonFactory && Object.prototype.hasOwnProperty.call(taskCreationButtonFactory, 'default') ? taskCreationButtonFactory['default'] : taskCreationButtonFactory;
|
|
11
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
12
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
13
|
+
|
|
14
|
+
function _typeof(obj) {
|
|
15
|
+
"@babel/helpers - typeof";
|
|
16
|
+
|
|
17
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
18
|
+
return typeof obj;
|
|
19
|
+
} : function (obj) {
|
|
20
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
21
|
+
}, _typeof(obj);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function Helpers0 (hb) {
|
|
25
|
+
//register a i18n helper
|
|
26
|
+
hb.registerHelper('__', function (key) {
|
|
27
|
+
return __(key);
|
|
28
|
+
});
|
|
14
29
|
/**
|
|
15
|
-
*
|
|
16
|
-
* modify it under the terms of the GNU General Public License
|
|
17
|
-
* as published by the Free Software Foundation; under version 2
|
|
18
|
-
* of the License (non-upgradable).
|
|
19
|
-
*
|
|
20
|
-
* This program is distributed in the hope that it will be useful,
|
|
21
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
22
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
23
|
-
* GNU General Public License for more details.
|
|
24
|
-
*
|
|
25
|
-
* You should have received a copy of the GNU General Public License
|
|
26
|
-
* along with this program; if not, write to the Free Software
|
|
27
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
28
|
-
*
|
|
29
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
30
|
+
* Register dompurify helper
|
|
30
31
|
*
|
|
32
|
+
* https://github.com/cure53/DOMPurify
|
|
33
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
34
|
+
* to make output safe for template systems
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
hb.registerHelper('dompurify', function (context) {
|
|
38
|
+
return DOMPurify.sanitize(context);
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* Register join helper
|
|
31
42
|
*
|
|
43
|
+
* Example :
|
|
44
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
45
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
46
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
32
47
|
*/
|
|
33
|
-
function Helpers0 (hb) {
|
|
34
|
-
//register a i18n helper
|
|
35
|
-
hb.registerHelper('__', function (key) {
|
|
36
|
-
return __(key);
|
|
37
|
-
});
|
|
38
|
-
/**
|
|
39
|
-
* Register dompurify helper
|
|
40
|
-
*
|
|
41
|
-
* https://github.com/cure53/DOMPurify
|
|
42
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
43
|
-
* to make output safe for template systems
|
|
44
|
-
*/
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
*
|
|
52
|
-
* Example :
|
|
53
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
54
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
55
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
56
|
-
*/
|
|
49
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
50
|
+
var fragments = [];
|
|
51
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
52
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
53
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
57
54
|
|
|
58
|
-
|
|
59
|
-
var
|
|
60
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
61
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
62
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
63
|
-
|
|
64
|
-
_.forIn(arr, function (value, key) {
|
|
65
|
-
var fragment = '';
|
|
66
|
-
|
|
67
|
-
if (value !== null || value !== undefined) {
|
|
68
|
-
if (typeof value === 'boolean') {
|
|
69
|
-
value = value ? 'true' : 'false';
|
|
70
|
-
} else if (typeof value === 'object') {
|
|
71
|
-
value = _.values(value).join(' ');
|
|
72
|
-
}
|
|
73
|
-
} else {
|
|
74
|
-
value = '';
|
|
75
|
-
}
|
|
55
|
+
_.forIn(arr, function (value, key) {
|
|
56
|
+
var fragment = '';
|
|
76
57
|
|
|
77
|
-
|
|
78
|
-
|
|
58
|
+
if (value !== null || value !== undefined) {
|
|
59
|
+
if (typeof value === 'boolean') {
|
|
60
|
+
value = value ? 'true' : 'false';
|
|
61
|
+
} else if (_typeof(value) === 'object') {
|
|
62
|
+
value = _.values(value).join(' ');
|
|
79
63
|
}
|
|
64
|
+
} else {
|
|
65
|
+
value = '';
|
|
66
|
+
}
|
|
80
67
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
return fragments.join(fragmentGlue);
|
|
86
|
-
}); //register a classic "for loop" helper
|
|
87
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
88
|
-
|
|
89
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
90
|
-
var ret = '';
|
|
91
|
-
startIndex = parseInt(startIndex);
|
|
92
|
-
stopIndex = parseInt(stopIndex);
|
|
93
|
-
increment = parseInt(increment);
|
|
94
|
-
|
|
95
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
96
|
-
ret += options.fn(_.extend({}, this, {
|
|
97
|
-
i: i
|
|
98
|
-
}));
|
|
68
|
+
if (keyValueGlue !== undefined) {
|
|
69
|
+
fragment += key + keyValueGlue;
|
|
99
70
|
}
|
|
100
71
|
|
|
101
|
-
|
|
72
|
+
fragment += wrapper + value + wrapper;
|
|
73
|
+
fragments.push(fragment);
|
|
102
74
|
});
|
|
103
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
104
|
-
if (var1 == var2) {
|
|
105
|
-
return options.fn(this);
|
|
106
|
-
} else {
|
|
107
|
-
return options.inverse(this);
|
|
108
|
-
}
|
|
109
|
-
}); // register a "get property" helper
|
|
110
|
-
// it gets the named property from the provided context
|
|
111
75
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
// it checks if value is in array
|
|
76
|
+
return fragments.join(fragmentGlue);
|
|
77
|
+
}); //register a classic "for loop" helper
|
|
78
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
116
79
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
80
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
81
|
+
var ret = '';
|
|
82
|
+
startIndex = parseInt(startIndex);
|
|
83
|
+
stopIndex = parseInt(stopIndex);
|
|
84
|
+
increment = parseInt(increment);
|
|
123
85
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
129
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
130
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
131
|
-
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
132
|
-
|
|
133
|
-
function program1(depth0,data) {
|
|
134
|
-
|
|
135
|
-
var buffer = "", stack1, helper;
|
|
136
|
-
buffer += "\n <h2>";
|
|
137
|
-
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
138
|
-
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
139
|
-
buffer += escapeExpression(stack1)
|
|
140
|
-
+ "</h2>\n ";
|
|
141
|
-
return buffer;
|
|
86
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
87
|
+
ret += options.fn(_.extend({}, this, {
|
|
88
|
+
i: i
|
|
89
|
+
}));
|
|
142
90
|
}
|
|
143
91
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
else {
|
|
150
|
-
|
|
151
|
-
+ "</p>\n ";
|
|
152
|
-
return buffer;
|
|
92
|
+
return ret;
|
|
93
|
+
});
|
|
94
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
95
|
+
if (var1 == var2) {
|
|
96
|
+
return options.fn(this);
|
|
97
|
+
} else {
|
|
98
|
+
return options.inverse(this);
|
|
153
99
|
}
|
|
100
|
+
}); // register a "get property" helper
|
|
101
|
+
// it gets the named property from the provided context
|
|
154
102
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
103
|
+
hb.registerHelper('property', function (name, context) {
|
|
104
|
+
return context[name] || '';
|
|
105
|
+
}); // register an 'includes' helper
|
|
106
|
+
// it checks if value is in array
|
|
107
|
+
|
|
108
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
109
|
+
if (_.contains(haystack, needle)) {
|
|
110
|
+
return options.fn(this);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (!Helpers0.__initialized) {
|
|
116
|
+
Helpers0(Handlebars);
|
|
117
|
+
Helpers0.__initialized = true;
|
|
118
|
+
}
|
|
119
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
120
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
121
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
122
|
+
var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
123
|
+
|
|
124
|
+
function program1(depth0,data) {
|
|
125
|
+
|
|
126
|
+
var buffer = "", stack1, helper;
|
|
127
|
+
buffer += "\n <h2>";
|
|
128
|
+
if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
129
|
+
else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
130
|
+
buffer += escapeExpression(stack1)
|
|
131
|
+
+ "</h2>\n ";
|
|
132
|
+
return buffer;
|
|
167
133
|
}
|
|
168
134
|
|
|
135
|
+
function program3(depth0,data) {
|
|
136
|
+
|
|
137
|
+
var buffer = "", stack1, helper;
|
|
138
|
+
buffer += "\n <p>";
|
|
139
|
+
if (helper = helpers.description) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
140
|
+
else { helper = (depth0 && depth0.description); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
141
|
+
buffer += escapeExpression(stack1)
|
|
142
|
+
+ "</p>\n ";
|
|
143
|
+
return buffer;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
buffer += "<div class=\"destination-selector\">\n ";
|
|
147
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
148
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
149
|
+
buffer += "\n <div>\n ";
|
|
150
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.description), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
151
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
152
|
+
buffer += "\n <div class=\"selector-container\"></div>\n <div class=\"actions\">\n </div>\n </div>\n</div>\n";
|
|
153
|
+
return buffer;
|
|
154
|
+
});
|
|
155
|
+
function selectorTpl(data, options, asString) {
|
|
156
|
+
var html = Template(data, options);
|
|
157
|
+
return (asString || true) ? html : $(html);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* This program is free software; you can redistribute it and/or
|
|
162
|
+
* modify it under the terms of the GNU General Public License
|
|
163
|
+
* as published by the Free Software Foundation; under version 2
|
|
164
|
+
* of the License (non-upgradable).
|
|
165
|
+
*
|
|
166
|
+
* This program is distributed in the hope that it will be useful,
|
|
167
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
168
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
169
|
+
* GNU General Public License for more details.
|
|
170
|
+
*
|
|
171
|
+
* You should have received a copy of the GNU General Public License
|
|
172
|
+
* along with this program; if not, write to the Free Software
|
|
173
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
174
|
+
*
|
|
175
|
+
* Copyright (c) 2018-2019 (original work) Open Assessment Technologies SA ;
|
|
176
|
+
*/
|
|
177
|
+
var defaultConfig = {
|
|
178
|
+
title: __('Copy to'),
|
|
179
|
+
description: __('Select a destination'),
|
|
180
|
+
actionName: __('Copy'),
|
|
181
|
+
icon: 'copy'
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Creates the selector component
|
|
185
|
+
* @param {jQueryElement} $container - where the component is rendered
|
|
186
|
+
* @param {Object} [config] - the configuration
|
|
187
|
+
* @param {String} [config.classUri] - the root classUri
|
|
188
|
+
* @param {String} [config.title] - header
|
|
189
|
+
* @param {String} [config.description] - a description sentence
|
|
190
|
+
* @param {String} [config.confirm] - when defined, confirmation message that will be displayed before triggering the action
|
|
191
|
+
* @param {String} [config.actionName] - the action button text
|
|
192
|
+
* @param {String} [config.icon] - the action button icon
|
|
193
|
+
* @param {Object} [config.taskQueue] - define the taskQueue model to be used (only useful if the triggered action uses the task queue)
|
|
194
|
+
* @param {String} [config.taskCreationUrl] - the task creation endpoint (only required if the option taskQueue is defined)
|
|
195
|
+
* @param {Object} [config.taskCreationData] - optionally define the data that will be sent to the task creation endpoint
|
|
196
|
+
* @param {Function} [config.preventSelection] - prevent selection callback (@see ui/resource/selectable)
|
|
197
|
+
* @returns {destinationSelector} the component itself
|
|
198
|
+
*/
|
|
199
|
+
|
|
200
|
+
function destinationSelectorFactory($container, config) {
|
|
169
201
|
/**
|
|
170
|
-
*
|
|
171
|
-
* modify it under the terms of the GNU General Public License
|
|
172
|
-
* as published by the Free Software Foundation; under version 2
|
|
173
|
-
* of the License (non-upgradable).
|
|
174
|
-
*
|
|
175
|
-
* This program is distributed in the hope that it will be useful,
|
|
176
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
177
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
178
|
-
* GNU General Public License for more details.
|
|
179
|
-
*
|
|
180
|
-
* You should have received a copy of the GNU General Public License
|
|
181
|
-
* along with this program; if not, write to the Free Software
|
|
182
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
183
|
-
*
|
|
184
|
-
* Copyright (c) 2018-2019 (original work) Open Assessment Technologies SA ;
|
|
185
|
-
*/
|
|
186
|
-
var defaultConfig = {
|
|
187
|
-
title: __('Copy to'),
|
|
188
|
-
description: __('Select a destination'),
|
|
189
|
-
actionName: __('Copy'),
|
|
190
|
-
icon: 'copy'
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* Creates the selector component
|
|
194
|
-
* @param {jQueryElement} $container - where the component is rendered
|
|
195
|
-
* @param {Object} [config] - the configuration
|
|
196
|
-
* @param {String} [config.classUri] - the root classUri
|
|
197
|
-
* @param {String} [config.title] - header
|
|
198
|
-
* @param {String} [config.description] - a description sentence
|
|
199
|
-
* @param {String} [config.confirm] - when defined, confirmation message that will be displayed before triggering the action
|
|
200
|
-
* @param {String} [config.actionName] - the action button text
|
|
201
|
-
* @param {String} [config.icon] - the action button icon
|
|
202
|
-
* @param {Object} [config.taskQueue] - define the taskQueue model to be used (only useful if the triggered action uses the task queue)
|
|
203
|
-
* @param {String} [config.taskCreationUrl] - the task creation endpoint (only required if the option taskQueue is defined)
|
|
204
|
-
* @param {Object} [config.taskCreationData] - optionally define the data that will be sent to the task creation endpoint
|
|
205
|
-
* @param {Function} [config.preventSelection] - prevent selection callback (@see ui/resource/selectable)
|
|
206
|
-
* @returns {destinationSelector} the component itself
|
|
202
|
+
* @typedef {destinationSelector} the component
|
|
207
203
|
*/
|
|
204
|
+
var destinationSelector = component({
|
|
205
|
+
/**
|
|
206
|
+
* Forwards data update to it's resource selector
|
|
207
|
+
* @see ui/resource/selector#update
|
|
208
|
+
*/
|
|
209
|
+
update: function udpate(results, params) {
|
|
210
|
+
if (this.resourceSelector) {
|
|
211
|
+
this.resourceSelector.update(results, params);
|
|
212
|
+
}
|
|
213
|
+
},
|
|
208
214
|
|
|
209
|
-
function destinationSelectorFactory($container, config) {
|
|
210
215
|
/**
|
|
211
|
-
*
|
|
216
|
+
* Updates the url on taskCreationButton
|
|
217
|
+
* @param {String} url - url of the task creation
|
|
212
218
|
*/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
*/
|
|
218
|
-
update: function udpate(results, params) {
|
|
219
|
-
if (this.resourceSelector) {
|
|
220
|
-
this.resourceSelector.update(results, params);
|
|
221
|
-
}
|
|
222
|
-
},
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Updates the url on taskCreationButton
|
|
226
|
-
* @param {String} url - url of the task creation
|
|
227
|
-
*/
|
|
228
|
-
updateTaskCreationUrl: function updateTaskCreationUrl(url) {
|
|
229
|
-
if (this.config && this.taskCreationButton && this.taskCreationButton.config) {
|
|
230
|
-
this.taskCreationButton.config.taskCreationUrl = url;
|
|
231
|
-
this.config.taskCreationUrl = url;
|
|
232
|
-
}
|
|
219
|
+
updateTaskCreationUrl: function updateTaskCreationUrl(url) {
|
|
220
|
+
if (this.config && this.taskCreationButton && this.taskCreationButton.config) {
|
|
221
|
+
this.taskCreationButton.config.taskCreationUrl = url;
|
|
222
|
+
this.config.taskCreationUrl = url;
|
|
233
223
|
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
224
|
+
}
|
|
225
|
+
}, defaultConfig).setTemplate(selectorTpl).on('init', function () {
|
|
226
|
+
this.render($container);
|
|
227
|
+
}).on('render', function () {
|
|
228
|
+
var self = this;
|
|
229
|
+
var $component = this.getElement();
|
|
230
|
+
/**
|
|
231
|
+
* Get the current selected class uri
|
|
232
|
+
* @returns {String} the selected uri
|
|
233
|
+
*/
|
|
234
|
+
|
|
235
|
+
var getSelectedUri = function getSelectedUri() {
|
|
236
|
+
var select = self.resourceSelector.getSelection();
|
|
237
|
+
var uris; //validate the selection
|
|
238
|
+
|
|
239
|
+
if (_.isPlainObject(select)) {
|
|
240
|
+
uris = _.pluck(select, 'uri');
|
|
241
|
+
|
|
242
|
+
if (uris.length) {
|
|
243
|
+
return uris[0];
|
|
254
244
|
}
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
if (this.config.taskQueue) {
|
|
258
|
-
this.taskCreationButton = taskCreationButtonFactory({
|
|
259
|
-
type: 'info',
|
|
260
|
-
icon: this.config.icon,
|
|
261
|
-
label: this.config.actionName,
|
|
262
|
-
terminatedLabel: 'Interrupted',
|
|
263
|
-
taskQueue: this.config.taskQueue,
|
|
264
|
-
taskCreationData: this.config.taskCreationData || {},
|
|
265
|
-
taskCreationUrl: this.config.taskCreationUrl,
|
|
266
|
-
taskReportContainer: $container
|
|
267
|
-
}).on('finished', function (result) {
|
|
268
|
-
self.trigger('finished', result, self.taskCreationButton);
|
|
269
|
-
this.reset(); //reset the button
|
|
270
|
-
}).on('continue', function () {
|
|
271
|
-
self.trigger('continue');
|
|
272
|
-
});
|
|
273
|
-
} else {
|
|
274
|
-
this.taskCreationButton = loadingButtonFactory({
|
|
275
|
-
type: 'info',
|
|
276
|
-
icon: this.config.icon,
|
|
277
|
-
label: this.config.actionName,
|
|
278
|
-
terminatedLabel: 'Interrupted'
|
|
279
|
-
});
|
|
280
245
|
}
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
if (this.config.taskQueue) {
|
|
249
|
+
this.taskCreationButton = taskCreationButtonFactory({
|
|
250
|
+
type: 'info',
|
|
251
|
+
icon: this.config.icon,
|
|
252
|
+
label: this.config.actionName,
|
|
253
|
+
terminatedLabel: 'Interrupted',
|
|
254
|
+
taskQueue: this.config.taskQueue,
|
|
255
|
+
taskCreationData: this.config.taskCreationData || {},
|
|
256
|
+
taskCreationUrl: this.config.taskCreationUrl,
|
|
257
|
+
taskReportContainer: $container
|
|
258
|
+
}).on('finished', function (result) {
|
|
259
|
+
self.trigger('finished', result, self.taskCreationButton);
|
|
260
|
+
this.reset(); //reset the button
|
|
261
|
+
}).on('continue', function () {
|
|
262
|
+
self.trigger('continue');
|
|
263
|
+
});
|
|
264
|
+
} else {
|
|
265
|
+
this.taskCreationButton = loadingButtonFactory({
|
|
266
|
+
type: 'info',
|
|
267
|
+
icon: this.config.icon,
|
|
268
|
+
label: this.config.actionName,
|
|
269
|
+
terminatedLabel: 'Interrupted'
|
|
270
|
+
});
|
|
271
|
+
}
|
|
281
272
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
273
|
+
this.taskCreationButton.on('started', function () {
|
|
274
|
+
function triggerAction() {
|
|
275
|
+
/**
|
|
276
|
+
* @event destinationSelector#select
|
|
277
|
+
* @param {String} classUri - the destination class
|
|
278
|
+
*/
|
|
279
|
+
self.trigger('select', getSelectedUri());
|
|
280
|
+
}
|
|
290
281
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
320
|
-
} else {
|
|
321
|
-
self.taskCreationButton.disable();
|
|
282
|
+
if (self.config.confirm) {
|
|
283
|
+
confirmDialog(self.config.confirm, triggerAction, function () {
|
|
284
|
+
self.taskCreationButton.terminate().reset();
|
|
285
|
+
});
|
|
286
|
+
} else {
|
|
287
|
+
triggerAction();
|
|
288
|
+
}
|
|
289
|
+
}).on('error', function (err) {
|
|
290
|
+
self.trigger('error', err);
|
|
291
|
+
}).render($component.find('.actions')).disable(); //set up the inner resource selector
|
|
292
|
+
|
|
293
|
+
this.resourceSelector = resourceSelectorFactory($$1('.selector-container', $component), {
|
|
294
|
+
selectionMode: 'single',
|
|
295
|
+
selectClass: true,
|
|
296
|
+
classUri: this.config.classUri,
|
|
297
|
+
showContext: false,
|
|
298
|
+
showSelection: false,
|
|
299
|
+
preventSelection: this.config.preventSelection
|
|
300
|
+
}); //spread the events
|
|
301
|
+
|
|
302
|
+
this.resourceSelector.spread(this, ['query', 'error', 'update']); //enable disable the action button
|
|
303
|
+
|
|
304
|
+
this.resourceSelector.on('change', function (selected) {
|
|
305
|
+
if (selected && _.size(selected) > 0) {
|
|
306
|
+
self.taskCreationButton.enable(); //append the selected class URI to the task creation data
|
|
307
|
+
|
|
308
|
+
if (_.isPlainObject(self.taskCreationButton.config.taskCreationData)) {
|
|
309
|
+
self.taskCreationButton.config.taskCreationData.classUri = getSelectedUri();
|
|
322
310
|
}
|
|
323
|
-
}
|
|
311
|
+
} else {
|
|
312
|
+
self.taskCreationButton.disable();
|
|
313
|
+
}
|
|
324
314
|
});
|
|
315
|
+
});
|
|
325
316
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
317
|
+
_.defer(function () {
|
|
318
|
+
destinationSelector.init(config);
|
|
319
|
+
});
|
|
329
320
|
|
|
330
|
-
|
|
331
|
-
|
|
321
|
+
return destinationSelector;
|
|
322
|
+
}
|
|
332
323
|
|
|
333
|
-
|
|
324
|
+
return destinationSelectorFactory;
|
|
334
325
|
|
|
335
326
|
});
|
package/dist/dialog/alert.js
CHANGED
|
@@ -34,15 +34,15 @@ define(['lodash', 'i18n', 'ui/dialog'], function (_, __, dialog) { 'use strict';
|
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
36
|
function dialogAlert(message, action, onCreateDialog, options) {
|
|
37
|
-
|
|
37
|
+
var _options = {
|
|
38
38
|
buttons: {
|
|
39
39
|
labels: {
|
|
40
40
|
ok: __('Ok')
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
var dialogOptions;
|
|
45
|
+
var dlg;
|
|
46
46
|
options = _.defaults(options || {}, _options);
|
|
47
47
|
dialogOptions = {
|
|
48
48
|
message: message,
|
package/dist/dialog/confirm.js
CHANGED