21 |
21 |
*/
|
22 |
22 |
return true;
|
23 |
23 |
}
|
24 |
|
|
25 |
24 |
if ($(row).find('[name$=add_element], [data-dynamic-display-value]').length > 0) {
|
26 |
25 |
/* this has complex widgets, don't use
|
27 |
26 |
* javascript in that case */
|
... | ... | |
32 |
31 |
var new_row = $(row).clone();
|
33 |
32 |
|
34 |
33 |
/* fix up form element name */
|
35 |
|
$(new_row).find('[name^=' + prefix + ']').each(
|
36 |
|
function() {
|
37 |
|
var cur_name = $(this).attr('name');
|
38 |
|
var pos = cur_name.indexOf('element', prefix.length) + 7; // 7 == len(element)
|
39 |
|
var index = cur_name.substring(pos, cur_name.length);
|
40 |
|
var after_pos = Math.max(index.indexOf('-'), index.indexOf('$'));
|
41 |
|
var after = '';
|
42 |
|
if (after_pos != -1) {
|
43 |
|
after = index.substring(after_pos, index.length);
|
44 |
|
}
|
45 |
|
var new_name = cur_name.substring(0, cur_name.length-index.length) +
|
46 |
|
(parseInt(index)+1) + after;
|
47 |
|
$(this).attr('name', new_name);
|
48 |
|
if ($(this).attr('type') == 'text') {
|
49 |
|
$(this).attr('value', '');
|
50 |
|
}
|
|
34 |
if ($('[name^=' + prefix + ']', new_row).length) {
|
|
35 |
var $element = $('[name^=' + prefix + ']', new_row);
|
|
36 |
if ($element.attr('type') == 'text') {
|
|
37 |
$element.attr('value', '');
|
51 |
38 |
}
|
52 |
|
);
|
|
39 |
var cur_name = $element.attr('name');
|
|
40 |
var pos = cur_name.indexOf('element', prefix.length) + 7; // 7 == len(element)
|
|
41 |
var index = cur_name.substring(pos, cur_name.length);
|
|
42 |
var element_regex = RegExp(`\\$element(\\d)`, 'g');
|
|
43 |
index = parseInt(index) + 1;
|
|
44 |
$(new_row).html($(new_row).html().replace(element_regex, `$element${index}`));
|
|
45 |
$(new_row).attr('data-widget-name', $(new_row).attr('data-widget-name').replace(element_regex, `$element${index}`));
|
|
46 |
}
|
53 |
47 |
if (name_attr == 'to$add_element') {
|
54 |
48 |
/* replace 1st list element by an empty label, as it's used
|
55 |
49 |
* to remove an actual selection */
|
... | ... | |
65 |
59 |
return false;
|
66 |
60 |
}
|
67 |
61 |
);
|
|
62 |
|
|
63 |
$('.widget.sortable input').each(function () {
|
|
64 |
$('<span class="handle">⣿</span>').insertBefore($(this));
|
|
65 |
});
|
|
66 |
$('.widget.sortable .content').sortable({
|
|
67 |
handle: '.handle',
|
|
68 |
start: function(event, ui) {
|
|
69 |
$('.widget.StringWidget input', $(this)).each(function () {
|
|
70 |
$(this).attr('value', $(this).val()); // save potential new values before the move
|
|
71 |
});
|
|
72 |
},
|
|
73 |
update : function(event, ui) {
|
|
74 |
$('.widget.StringWidget', $(this)).each(function (index) {
|
|
75 |
var element_regex = RegExp(`\\$element(\\d)`, 'g');
|
|
76 |
$(this).html($(this).html().replace(element_regex, `$element${index}`));
|
|
77 |
$(this).attr('data-widget-name', $(this).attr('data-widget-name').replace(element_regex, `$element${index}`));
|
|
78 |
});
|
|
79 |
},
|
|
80 |
});
|
68 |
81 |
}
|
69 |
82 |
|
70 |
83 |
$(document).ready(prepare_widget_list_elements);
|
71 |
|
-
|